I'm a little confused as to what this approach involves, as you seem to suggest releasing up the dependency tree from a given leaf project? I'd certainly advocate a release goal to release in the opposite direction, i.e. a project and all its snapshot dependencies down the dependency tree.
Mark On 16 January 2010 13:37, Daniel Frey <[email protected]> wrote: > > Hi > > I would like to write my first maven module that does releases over all the > dependencies of a main module. I am interested in your opinion, > recommondations and critical feedback. > > Let me first illustrate why I would like to do that. The maven-release-plugin > does a release in a way that it: > > 1. Adds a tag to the repository for the main module > 2. Releases al artifacts of the main module (JARs, website) > 3. Deploys all artifacts of the main module to the remote repository (JARs > for bitecode, sources and javadoc) > 4. Allows to change the development versions of the dependent modules > > What I miss in this approach is: > > 1. The sites of all dependent modules (including test results and coverage, > javadocs, dependencies) > 2. Dependent modules artifacts in the repository (distinctly versioned JARs > for bitecode, sources and javadoc) > 3. Distinct versions of the dependent modules when copying all the needed > libraries to the official website (say in a JNLP release) > > The idea of the new module would be to iterate through all dependent modules > from dependency tree leaf towards its root and: > > 1. Investigate the existing tags on the SVN repository to find one for the > dependent module > 2. If the dependent module has code changes since the tags revision: > 2a. Alter the POM dependent module so it reflects the dependencies to its > dependent modules correctly by replacing SNAPSHOT versions with distinct > tagged versions > 2b. Release the dependent module > 3. Else do not release the module but keep the tagged version as the one to > replace SNAPSHOTs in subsequent dependent modules > > Let me illustrate that with a concrete example. Say I have the following > multi-module project dependencies for my main module > "ch.xmatrix.ups.tools.ust" (filtering out only my own dependencies): > > ch.xmatrix.ups.tools.ust 2.1-SNAPSHOT > +- ch.xmatrix.ups.tools.common 2.0-SNAPSHOT > | +- ch.xmatrix.common.utils-all 2.3-SNAPSHOT > | | \- ch.xmatrix.common.icon 1.4-SNAPSHOT > | +- ch.xmatrix.ups.data.taxa 2.0-SNAPSHOT > | \- ch.xmatrix.ups.data.constraints SNAPSHOT > +- ch.xmatrix.ups.data.sessions SNAPSHOT > +- ch.xmatrix.ups.data.courses SNAPSHOT > \- ch.xmatrix.ups.server.client 2.0-SNAPSHOT > \- ch.xmatrix.ups.server.interface 2.0-SNAPSHOT > > And there would be no current tag for ch.xmatrix.common.utils-all, > ch.xmatrix.ups.data.constraints, ch.xmatrix.ups.server.interface and > ch.xmatrix.ups.tools.ust without any changes in the meantime. I would like to > be prompted for the desired development version change of each these > remaining dependent modules. If I choose to keep the same development > version, then the release order, the current development version would > stay and the release version of this example would be: > > ch.xmatrix.common.utils-all 2.3-SNAPSHOT 2.3 > ch.xmatrix.ups.data.constraints SNAPSHOT 1.0 > ch.xmatrix.ups.server.interface 2.0-SNAPSHOT 2.0 > ch.xmatrix.ups.tools.ust 2.1-SNAPSHOT 2.1 > > I currently achive that with a perl script. However, I wonder whether such a > task would make sense to be done as a maven module > (maven-releasetree-module). If it would make sense, I would see the following > main limitation: My approach would use other maven modules like > maven-dependency-modules and maven-release-module. Having had a quick look at > the maven modules howto, this seem not to be a valid approach. Each module > should be self-contained and independent of others. > > Any advices, recommondations, critical feedback, thoughts would be highly > appreciated... > > Thanks for feedback in advance > Daniel > > Daniel Frey > Senior Software Engineer xmatrix > Kellerweg 65 > CH-8055 Zürich > [email protected] > http://www.xmatrix.ch > tel: > mobile: +41 (44) 241 64 46 > +41 (77) 425 28 57 > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
