You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Michael Johns (JIRA)" <ji...@codehaus.org> on 2008/07/03 22:32:26 UTC

[jira] Created: (MRELEASE-362) Support tagging nested projects

Support tagging nested projects
-------------------------------

                 Key: MRELEASE-362
                 URL: http://jira.codehaus.org/browse/MRELEASE-362
             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 release:clean
{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: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] Commented: (MRELEASE-362) Support tagging nested projects

Posted by "Stijn Maller (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/MRELEASE-362?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=146963#action_146963 ] 

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: http://jira.codehaus.org/browse/MRELEASE-362
>             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 release:clean
> {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: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] Commented: (MRELEASE-362) Support tagging nested projects

Posted by "Russell Centanni (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/MRELEASE-362?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=145070#action_145070 ] 

Russell Centanni commented on MRELEASE-362:
-------------------------------------------

It was my understanding that running a plugin on a multi-module project simply runs the plugin against each module. I was expecting the release plugin to behave this way as well, updating each module's pom and tagging each.

I was surprised when the release plugin only tagged the parent project. To me, this seems like unexpected behavior.  Is there any explanation as to why the release plugin doesn't run this way?

> Support tagging nested projects
> -------------------------------
>
>                 Key: MRELEASE-362
>                 URL: http://jira.codehaus.org/browse/MRELEASE-362
>             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 release:clean
> {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: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira