[[BackLinksMenu]] [[TicketQuery(summary=PLUGIN_MODULE_STRUCTURE_R1, format=table, col=summary|owner|status|type|component|priority|effort|importance, rows=description|analysis_owners|analysis_reviewers|analysis_score|design_owners|design_reviewers|design_score|implementation_owners|implementation_reviewers|implementation_score|test_owners|test_reviewers|test_score|)]] = Analysis = == Overview == This revision should explain throughly the structure of the module, what is inside a module, where are stored different components, what defines external and shared components, how are they loaded, etc. Each module has different structure in development, compiled and runtime stages. This revision should explain the differences between them. == Task requirements == * Explain the structure of an example module * List elements that are obligatory for each module * link explanations of them if any * write explanations * Explain approach applied to shared resources * Explain how the modules are initialized (what is extracted and when). {{{ org.sophie2.m1 |_pom.xml |_src |__main |___java |____*.java |___resources |____*.png |__test |___java |____*.java |___resources |____*.png |_target |__classes |__test classes }}} * List available modules now * Describe specific information about available modules. * Include the information from [wiki:PLUGIN_MODULE_STRUCTURE_R0] * Explain differences between module in the repository and in the distribution. == Task result == [wiki:PLUGIN_MODULE_STRUCTURE] == Implementation idea == Implement this task in parallel with [wiki:PLATFORM_STUCTURE_R2]. Use * Each module in /modules has the following structure ||'''/trunk/sophie2-platform/modules/org.sophie2.*/'''|| ||'''/trunk/sophie2-platform/modules/org.sophie2.*/.settings'''||project settings configurations for Eclipse. They must be synchronized with the sophie2-platform project settings|| ||'''/trunk/sophie2-platform/modules/org.sophie2.*/target'''||contains compiled classes|| ||'''/trunk/sophie2-platform/modules/org.sophie2.*/src'''||contains sources and configuration files|| ||'''/trunk/sophie2-platform/modules/org.sophie2.*/src/test/java'''||contains unit tests|| ||'''/trunk/sophie2-platform/modules/org.sophie2.*/src/test/resources'''||contains unit tests' tools (scripts, documentation, needed files for the tests)|| ||'''/trunk/sophie2-platform/modules/org.sophie2.*/src/main'''|| ||'''/trunk/sophie2-platform/modules/org.sophie2.*/src/main/resources'''||contains the resources which the module uses|| ||'''/trunk/sophie2-platform/modules/org.sophie2.*/src/main/resources/distrib'''||each module contains its own distrib folder it is used it contains the files which will be installed on the users machine in order each module to be completely funtional|| ||'''/trunk/sophie2-platform/modules/org.sophie2.*/src/main/java'''|| ||'''/trunk/sophie2-platform/modules/org.sophie2.*/src/main/java/org'''|| ||'''/trunk/sophie2-platform/modules/org.sophie2.*/src/main/java/org/sophie2'''||contains application sources|| except author module, which doesn't need test section. == Related == [wiki:PLUGIN_MODULE_STRUCTURE_R0] [[BR]] [wiki:PLATFORM_STRUCTURE_R2] [[BR]] == How to demo == Present [wiki:PLUGIN_MODULE_STRUCTURE] = Design = Note: The requirement with the shared resources explanation depends on the implementation of [wiki:PLUGIN_SUPPORT_LIB_BASE_R1]. The implementer have to: * explain the structure of the org.sophie2.proto.project as an example module. * create archive with the proto.project module in dev-tools so that the creation of the new module will not break the build anymore. It should contain at least one class for example Hello.java. (There is such in org.sophie2.base.scene.jogl module) * explain how to create new module with correct structure (See [wiki:PLATFORM_DEPLOYMENT_BUILD_ECLIPSE] for help. * explain what is extension/extension point and how to create and use them. * use the table in impementation idea and write more detailed explanation about their usage and functions. * see the result of [wiki:PLUGIN_SUPPORT_LIB_BASE_R1] and describe how the shared resources are used and where are stored. * link to the [PLUGIN_DECOMPOSITION_R2] dependency diagram where all modules and their dependencies are described and add information about their specific functionality. * use the [wiki:PLATFORM_STRUCTURE_R2] and explain what is happening with the module structure after a build. * use the information from [wiki:PLUGIN_MODULE_STRUCTURE_R0] - the design phase. So the structure of the [wiki:PLUGIN_MODULE_STRUCTURE] document will be: {{{ PLUGIN MODULE STRUCTURE |_Basic module structure |_Proto Project |__Structure |__How to make a new module |_Sophie Modules |__Diagram |__Functionality |__Built Structure |_Extension/Extension Points |__Description |__Usage |__Examples |_Shared Resources }}} = Implementation = [wiki:PLUGIN_MODULE_STRUCTURE] = Testing = = Comments = ^(Write comments for this or later revisions here.)