40 days passed without comments/opinions so today I found a bit of time
to experiment with the modular build system and I committed it.
I extracted a mailet-api module and the mailet-library module from the
phoenix-deployment and it worked fine.
Then I moved all of the source code (escluding Main.java) to the
core-library module. I had to move to core-library/build.xml the
Constants.java properties based source pre-processing.
I also had to add hacks because this code depends on mailet-library
module but being it a library itself was not possible to depends on it.
Then I extracted most of the functions modules in their own folder:
smtpserver, pop3server, fetchmail, nntpserver, remotemanager, imapserver
and spoolmanager (maybe to be splitten in mailetcontainer/transport)
worked out of the box.
Running ant from the root did not work because the default target is
"lite" and it expects modules to be already built and only run
deployments, so I switched the default target to Full.
Please review the commits and let me know if this is what you intended
with your proposal.
I have a bunch of problems to proceed:
1) we can reorganize stuff but libraries will depends on other
libraries: how can we manage intra-libraries dependencies? We will
refactor when we have cross-dependency but we cannot avoid simple
dependency. The same apply to APIs (e.g: the MailRepository apis depends
on the Mailet apis). We will probably need an "util/common" library to
be imported by every other library, too.
2) How should we manage javadocs creation and sdk creation in this
multimodule structure? I think the "move" broke them.
Once this steps are solved the following step is to split the
core-library into multiple libraries and to move around 3-4 classes
belonging to function-modules packages but we need them in the libraries.
Once we are done with this we should try to isolate the use of avalon
from the api/library layer and isolate it to the function modules.
The last step is to refactor the function modules to move the avalon
stuff into a specific avalon-deployment module and the
phoenix-deployment will depend on this module (we need intra module
dependency here too).
WDYT?
robert burrell donkin ha scritto:
(moved stage two discussion into a new thread)
i've created some spaces on
http://wiki.apache.org/james/Development/Modularisation to help
develop ideas about the actual movement of code (stage two of the
proposal, stage one being preparations). please feel free to dive in
an update :-)
[...]
>> Function Modules
>> - smtpserver
>> - pop3server
>> - fetchmail
>> - remotemanager
>> - nntpserver
>> - imapserver
>> - transport (maybe to be named spoolmanager)
>> - mailetcontainer: to contain the James.java and some of the
>> transport/*loader* stuff.
>
> sounds reasonable
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]