maven-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Stijn Maller (JIRA)" <>
Subject [jira] Commented: (MRELEASE-362) Support tagging nested projects
Date Thu, 04 Sep 2008 10:46:48 GMT


Stijn Maller commented on MRELEASE-362:

I agree with Russell, when doing a multi-project build I expected the release plugin to individually
tag all my projects. Instead it only tags the "parent" project.  (parent as in project aggregation,
not project inheritance) I can see how this could be more or less useful if all your projects
are nested under the parent. In this case at least everything will be tagged, albeit with
the same tag. 

|---- project A 1.0 (multimodule aggregator for B and C)
        |---- project B 2.1
        |---- project C 3.4

A, B and C get tagged with "project A_1.0"

However, in our project the projects are next to the aggregate build, meaning almost nothing
gets tagged. (Project A does not contain much more then the pom itself)

|---- project A 1.0 (multimodule aggregator for B and C) 1.0
|---- project B 2.1 
|---- project C 3.4

=> Every release we build project A will be tagged. (Although it almost never changes itself)

Project B and C on the other hand change constantly but have to be tagged manually.

> Support tagging nested projects
> -------------------------------
>                 Key: MRELEASE-362
>                 URL:
>             Project: Maven 2.x Release Plugin
>          Issue Type: Improvement
>          Components: scm
>    Affects Versions: 2.0-beta-6
>            Reporter: Michael Johns
>            Priority: Minor
> We have a non-standard situation here.  I can _almost_ get Maven to support it, but I
can't cross the last hurdle of tagging and releasing the project.  The business case is that
we have a core product that is built with Maven and a customer implementation of that product
that is also built with Maven.  Each builds just fine on their own.  They are both first-class
projects.  The second project depends on the first.  Each project has multiple modules.
> The situation we want to support is parallel development of both projects.  If a developer
makes a change in the Core product, we don't want to have to go through a tag/release cycle
in order to pull that change into the Customer project.  (Yes, this is non-standard and not
the best idea, but we have few options due to time and resources.)  To accomplish this, we
linked the second project into the first using svn:externals.  We then created a new profile
in our pom.xml that pulls in the "parent" pom.xml from the second project as a module.  Let
me see if I can visually represent it:
> Core Product
>   - Core Product Module 1
>   - Core Product Module 2
>   - Core Product Module 3
>   - Customer Project  <== linked via svn:externals and included as a module in the
"Core Product" pom.xml via a profile
>     - Customer Project Module 1
>     - Customer Project Module 2
>     - Customer Project Module 3
> Note that the version numbers for the Customer projects are different than those in the
Core Product.
> This works like a champ when running most plug-ins against it.  For example, I can run
the eclipse plug-in against it (using the special profile), and all project dependencies are
resolved correctly between the two.  The problem comes when I try to tag and release them
together.  This is the command I'm using:
> {code}
> mvn -P customer --batch-mode -Darguments="-P customer" -DpreparationGoals="jar:test-jar
install" -Dresume=false -Dgoals="deploy site-deploy" clean install release:prepare release:perform
> {code}
> The "customer" profile is the one that pulls in the customer projects.  This command
(executed in Continuum) works like a champ to release our other projects.  But when I run
it against this project, here's what happens:
> # Updates versions on all projects (both Core and Customer) to drop SNAPSHOT
> # Installs all projects
> # Tags Core project
> #* Does *not* tag Customer project (*this is the problem*)
> #* Tagged Core project still points to external projects' trunk (this is a SVN issue,
not a Maven issue)
> # Updates versions on all projects (both Core and Customer) to next SNAPSHOT
> # Checks out tagged project
> #* Project still points to Customer project's trunk (again, a SVN issue)
> # Builds projects
> #* Build fails on external projects because they point to the new SNAPSHOT version of
main project (due to SVN issue)
> So ignoring the SVN issues, here's what I'd like to see supported by the release plug-in:
> * When tagging, also tag the Customer project that is included via a module.  It is a
stand-alone project, so it has all of the necessary information in the pom.
> I know this is a bit convoluted, so please let me know if you need clarification.  I
could potentially attach some of our pom files to show how our project is set up, but a big
part of this is the directory structure (which we create using svn:externals, but it doesn't
have to be done that way), so I'm not sure how useful it would be.

This message is automatically generated by JIRA.
If you think it was sent incorrectly contact one of the administrators:
For more information on JIRA, see:


View raw message