Hi all,
I've just committed an example of how our repository could be structured
to support the ongoing componentization, new (osgi) block structure and
M10N. Daniel suggested this flat structure a while ago [0], maven [1]
and eclipse [2] use a similar layout.
The example is in the whiteboard, under maven2/cocoon-flat-layout.
The concept is the following :
/trunk
pom.xml
/cocoon-core
/cocoon-forms-block
/cocoon-ajax-block
/cocoon-asciiart-block
/... other blocks
/webapp
--> pom.xml
This is essentially just a multi-module pom which acts as the parent of
all module poms.
<module>cocoon-core</module>
<module>cocoon-ajax-block</module>
<module>cocoon-forms-block</module>
....
It allows us to define properties and plugins valid for all modules.
Child modules can still override if necessary.
--> /cocoon-core
This is kept as one maven module for now, we can choose to split this up
further. I didn't separate this one into api/impl as I wasn't sure if it
made sense, but maven-wise it's very easy to do so.
--> /cocoon-forms-block, /cocoon-asciiart-block ...
All modules that we choose to host and support ourselves land in the
repository root. We can either stick to the existing block naming
convention or go for a package based approach like eclipse.
--> /webapp
This is a special module in the sense that it will be used as a
deployment target for blocks during development. The webapp will also
get included in various other package and deployment targets.
To test the usability from the new structure, go to
maven2/cocoon-flat-layout and do
"mvn -Dmaven.test.skip=true install eclipse:eclipse" , it will
create an eclipse project for each module, at the end you should see
something like
[INFO] BUILD SUCCESSFUL
[INFO] ---------------------------------------------
[INFO] Total time: 54 seconds
[INFO] Finished at: Thu Oct 27 00:36:29 CEST 2005
[INFO] Final Memory: 8M/51M
In eclipse, you then do File->Import->Existing Projects Into Workspace
and point the root directory to maven2/cocoon-flat-layout. It should
detect all available projects, complete with library + inter-project
dependencies, source and targetpaths. Note that you'll need to setup the
M2_REPO variable to point to your maven2 repo. Alternatively, the
eclipse plugin can do this for you [3].
Please have a look and tell me what you think.
I'll explain the new block structure in another thread.
Regards
Jorg
[0] http://thread.gmane.org/gmane.text.xml.cocoon.devel/54923
[1] http://svn.apache.org/viewcvs.cgi/maven/components/trunk/
[2] http://dev.eclipse.org/
[3]
http://maven.apache.org/maven2/plugins/maven-eclipse-plugin/add-maven-repo-mojo.html
|