Dear Wiki user, You have subscribed to a wiki page or wiki category on "James Wiki" for change notification.
The following page has been changed by RobertBurrellDonkin: http://wiki.apache.org/james/Development/Modularisation The comment on the change is: Sketched out where I see modularisation going New page: = Modularisation = [[TableOfContents(4)]] == Why Modularize? == * Improved separation of concerns * Learning code less steep for developers interested in a subset of the total functionality * Enables different modules to depend on different versions of Java * Allows development of experimental modules on trunk. This: * Encourages alternative implementations * Enables branching per module * Simplifies multiple deployment targets == Modules Types == Dependencies between modules will be layered in the obvious way. For example: attachment::dependencies.png === Build Modules === Contains code for James modular build === Deployment Modules === Contains code required to deploy James in various container environments === Function Modules === Factors out function from container specific implementations === Library Modules === Factor out common library code reused by functional modules into library modules === API Module === Single module containing the core James API = Execution = == Stage One == === Phase 1 === Make space for modules within james server trunk * server/trunk -> server/trunk/pheonix === Phase 2 === Top level build * create build.xml which delegates to pheonix/build.xml === Phase 3 === Upgrade build: * upgrade to ant 1.7 (the new features are *really* good) * create stage subdirectory which is local only * create buildtasks module to host build macros and ant tasks for module builds === Phase 4 === Create empty base module top to contain API interfaces * create macros and tasks to support modular build * create build-modules.xml to support common structure * base builds copies artifacts into stage subdirectory * pheonix build copies artifacts locally from stage * create macros to allow easy generation of new modules