A page to collect notes on the conversion to Maven 2
Please use the StrutsMaintenanceMaven page for formal instructions.
Assemblies
The action/assembly module has the config for the binary assembly (borrowed from myfaces/core), the source assembly (borrowed from maven/components) and the "all" assembly which is currently in use (see assembly/pom.xml)
I tried combining these using multiple <execution>s of the assembly plugin, but got an error saying that the assembly plugin must be invoked directly. I think that means in <project>/<build>/<plugins>/<plugin>, and not in a profile.
maven-assembly-plugin v2.0.1 does support multiple descriptors, the docs published in October 2005 are for a prior version.
The source assembly (with <module>s) only works with maven-assembly-plugin 2.1-SNAPSHOT
Project Structure
Reconcile Maven's suggested directory structure with the current one, decide what to change and what to configure.
Maven |
Struts |
Notes |
src/main/java |
src/java |
|
src/main/resources |
src/java, conf, src/conf |
|
src/test/java |
src/test |
|
src/test/resources |
src/test, src/conf |
|
src/site/xdoc |
xdocs |
|
src/tld |
src/main/resources/META-INF |
|
- Configuration will be easier if all of the non-Java resources are in one place. That can either be in the same directory structure as the source code, or in a separate one. If in a separate directory, the structure should mirror the desired structure within the build artifact, so that the resources can be copied all at once.
- Any sub-project that builds more than one artifact (such as a jar and an example webapp) may need to be split into multiple modules
Other Issues
- There is currently no M2 equivalent of 'maven multiproject:site' (The module sites get built, but not assembled.)
- Integration testing? Cactus isn't seeing much activity, is there a Maven 2 plugin yet?
- The groupIds are: org.apache.struts.action, org.apache.struts.shale, org.apache.struts.tiles
Notes
- The <relativePath> for the parent pom allows Maven to find local modifications that haven't yet been installed in a repository.
- For struts-core, JUnit would normally be in test scope, but it is required to compile the mock objects as well as to run the tests.
- Optional dependencies will be used for compilation, but they are not transitive.
Timeline
[DONE] 20051227 - Initial commit of experimental parent pom and pom for struts-action: http://svn.apache.org/viewcvs?rev=359333&view=rev
[DONE] 20060104 - Addition of poms for el, extras, taglib and tiles.
- April 2006 - Struts Action Conversion in progress