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
  • No labels