Re: continuous releasing: versions:set and/or release:update-version to release an aggregator project

2013-08-02 Thread Roger Brechbühl
Hi Nestor

The version.override feature is not a plugin it's an extension to the maven
base installation. So,
http://search.maven.org/#artifactdetails|ch.rotscher.maven.core|maven-core-extensions|0.2.0|jarhas
to be installed to your
*MAVEN_HOME/lib/ext*.

The extension is then activated with *-Dversion.override* on the command
line. It changes the version on the fly but only for the current build and
without changing the pom file. There are several strategies on how the
version is generated.

Beware, that the groupId of the root pom is taken into account whether the
version of a module or dependency should be changed to ${version.override}.
E.g. groupId is *com.foo.bar* then all modules/dependencies with
com.foo.bar and com.foo.bar.* are included. In other words the extension
assumes all modules/dependencies with the same base groupId to be in the
same reactor.

Cheers,
Rotsch


Re: continuous releasing: versions:set and/or release:update-version to release an aggregator project

2013-08-02 Thread Stephen Colebourne
On 2 August 2013 06:51, Stephen Connolly
stephen.alan.conno...@gmail.com wrote:
 On Friday, 2 August 2013, Stephen Colebourne wrote:
 I'm trying to argue that that your perception of it being bad practice
 is out of place. It is very common for teams to want to have a tree of
 modules that are all versioned together with a single version number.

 Then they all should have a common parent and use parent version
 inheritance.

They do. But its never that simple. Some of the child modules are
public and some are private (of the same public parent). Since the
names of the private ones cannot be exposed in the public area, we
have a separate private aggregator to pull the private and public into
the same reactor where everything works fine.


I have tested the changes, and they replicate the set-aggregated goal
I wrote. I still think a separate goal is clearer to document and use,
but its your plugin. I think you're going to need quite a lot of
documentation to describe what the plugin is supposed to do. For
example, for my use case, only the artifactId needs to be wildcarded.

There is one area where the plugin does not update (nor did set-aggregated):
dependency
  groupIdcom.opengamma.platform/groupId
  artifactIdog-integration/artifactId
  version${og.version}/version
/dependency

Because it is a property, it is not updated. I think this is a separate issue.

Thanks for working on this. Once released it will work effectively
enough for us, with just the one manual ${og.version} property change.

Stephen

-
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org



Re: continuous releasing: versions:set and/or release:update-version to release an aggregator project

2013-08-02 Thread Nestor Urquiza
@Patrick, Thanks for your reply. It has worked like a charm for three years
because the team has not done continuous delivery/deployment. Now it is the
time to change that and so the need is genuine: To release everything fixing
version numbers on the fly with just one command that can be automated in a
CI server.



--
View this message in context: 
http://maven.40175.n5.nabble.com/continuous-releasing-versions-set-and-or-release-update-version-to-release-an-aggregator-project-tp5766275p5766589.html
Sent from the Maven - Users mailing list archive at Nabble.com.

-
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org



Re: continuous releasing: versions:set and/or release:update-version to release an aggregator project

2013-08-02 Thread Nestor Urquiza
@Stephen, correct. It works only for inheritance. Not for pure aggregation.



--
View this message in context: 
http://maven.40175.n5.nabble.com/continuous-releasing-versions-set-and-or-release-update-version-to-release-an-aggregator-project-tp5766275p5766590.html
Sent from the Maven - Users mailing list archive at Nabble.com.

-
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org



Re: continuous releasing: versions:set and/or release:update-version to release an aggregator project

2013-08-01 Thread Stephen Connolly
How I want this to work is to have versions-maven-plugin have a way to undo
versions:resolve-ranges (
http://mojo.codehaus.org/versions-maven-plugin/resolve-ranges-mojo.html) -
it would need to ensure that the lower bound of any unresolved range is the
resolved version... [see below]

We'd need to split preparationGoals in the release plugin... either into
preparationGoals + verificationGoals or into initiationGoals +
preparationGoals (I favour the latter as it preserves the semantics of
preparationGoals... but the first one maps more correctly with what each
set should be doing)

Then this would become super easy...

You develop with version ranges for your dependencies...

The release plugin would have
initiationGoals = versions:resolve-ranges versions:commit
preparationGoals = clean verify
completionGoals = versions:unresolve-ranges versions:commit

So say your development pom has

dependency
  ...
  artifactIdfoo/artifactId
  version[1.0,2.0)/version
/dependency

and the latest version of foo is 1.2

When you kick off the release, the range gets resolved to

dependency
  ...
  artifactIdfoo/artifactId
  version1.2?versions range=[1.0,2.0)?/version
/dependency

(My current thought is to use an XML PI to stash the old range)

Then we invoke Maven again (because Maven doesn't re-read the poms) and do
a clean verify to make sure that this all builds

Then we tag the release

Then we run completionGoals and versions:unresolve-ranges puts the version
range back, but upping the lower bound

dependency
  ...
  artifactIdfoo/artifactId
  version[1.2,2.0)/version
/dependency

Maven ups the pom version to next development snapshot and commits the pom

That will give you the ability to develop on ranges (which is nice and
flexible) but release on pinned versions (which is exactly what you should
be doing)

If we cannot deliver something like that, then I think we should just drop
ranges from the next major version of Maven.




On 1 August 2013 06:19, Nestor Urquiza nestor.urqu...@gmail.com wrote:

 Hi,

 Let me give more information,

 I use an aggregator project for war1 project:
 modules
 module../jar1/module
 module../jar2/module
 module../war-inc/module
 module../war1/module
 /modules

 Another aggregator project for war2 project:
 modules
 module../jar1/module
 module../war-inc/module
 module../war1/module
 /modules

 Notice they both depend on jar1. The jar2 project in fact depends also on
 jar1. The war-inc project is used to keep common web resources for war1 and
 war2. We use maven overlay to marge those shared resources in a final war
 for each project.

 This is working like a charm. It has been working in fact now for 3 years.
 However everytime we need a release we need to start updating version
 unmbers in dependencies, doing prepare, then perform, you know the story.
 This is great when the team releases every once in a while. This is an
 issue
 if you want to release several times a day. About resources needed and so
 on
 that is something we are tackling via idempotent scripts so we are
 literally
 ready to make sure we increase the version number for all projects at once
 every time new code is committed to the version control server. We can
 handle that last part with jenkins, that is not a problem either. The only
 problem is how can I leverage on an existing tool (without building it
 myself) that would allow to release all modules from just one command.

 So back to Roger suggestion I added the version override dependency as per
 the github project, updated the version tag to point to 0.2.0 and run the
 below command (including actually the very same example from github):
 mvn clean install -Dversion.override=1.2.3-RC-5

 However none of the modules were changed including no change to the
 aggregator project either.

 Roger, have you used this plugin with aggregator projects as I am trying?
 Could you provide some further guidance?

 My option is looking more and more like I will need to do something like:
 foreach module
   replace module version
   for each dependency
 if it is a module
   replace module version

 Then find out if mvn:prepare and mvn:perform will work after from the
 aggregator project releasing all necessary projects correctly. At this
 point
 I am already facing another issue. Let us suppose I update my two war
 multi-pom aggregator projects, all the modules and the dependencies to be
 version 2.2000.0-SNAPSHOT.

 I would expect a command line the below to change the version number in all
 modules to 2.2000.0, tag it preparing it for release as well as setting the
 next development version to be 2.2000.1-SNAPSHOT for all modules as well.
 Finally each dependency that is a module itself should also be changed to
 2.2000.1-SNAPSHOT. But that does not work either:
 mvn clean --batch-mode release:prepare -DdryRun=true
 -DautoVersionSubmodules=true -DreleaseVersion=2.2000.0
 

Re: continuous releasing: versions:set and/or release:update-version to release an aggregator project

2013-08-01 Thread Stephen Colebourne
I think this is perhaps related to problems I am seeing right now as well.

Basically, the versions:set goal is buggy except in the classic case
where the hierarchy of aggregation matches the hierarchy of
inheritance.

See
http://jira.codehaus.org/browse/MVERSIONS-131
and
http://jira.codehaus.org/browse/MVERSIONS-184

For example, given a tree:
A (pom only)
- B
- C (pom only)
- - D
- - E
where B and C are children of A
and D and E are children of C
and A aggregates B and C
and C aggregates D and E
In this case, versions:set plugin will work fine

Now consider adding a new root R which aggregates A, but is not the parent of A.
If you run versions:set on R it will only update R, and not A/B/C/D/E

If you manually set the version of A, and then run versions:set on R,
projects R/A/B/D/E will be updated, but not C. (which is pretty weird)

The patch in MVERSIONS-131 sounds reasonable. Could it be evaluated?

Stephen



On 1 August 2013 09:55, Stephen Connolly
stephen.alan.conno...@gmail.com wrote:
 How I want this to work is to have versions-maven-plugin have a way to undo
 versions:resolve-ranges (
 http://mojo.codehaus.org/versions-maven-plugin/resolve-ranges-mojo.html) -
 it would need to ensure that the lower bound of any unresolved range is the
 resolved version... [see below]

 We'd need to split preparationGoals in the release plugin... either into
 preparationGoals + verificationGoals or into initiationGoals +
 preparationGoals (I favour the latter as it preserves the semantics of
 preparationGoals... but the first one maps more correctly with what each
 set should be doing)

 Then this would become super easy...

 You develop with version ranges for your dependencies...

 The release plugin would have
 initiationGoals = versions:resolve-ranges versions:commit
 preparationGoals = clean verify
 completionGoals = versions:unresolve-ranges versions:commit

 So say your development pom has

 dependency
   ...
   artifactIdfoo/artifactId
   version[1.0,2.0)/version
 /dependency

 and the latest version of foo is 1.2

 When you kick off the release, the range gets resolved to

 dependency
   ...
   artifactIdfoo/artifactId
   version1.2?versions range=[1.0,2.0)?/version
 /dependency

 (My current thought is to use an XML PI to stash the old range)

 Then we invoke Maven again (because Maven doesn't re-read the poms) and do
 a clean verify to make sure that this all builds

 Then we tag the release

 Then we run completionGoals and versions:unresolve-ranges puts the version
 range back, but upping the lower bound

 dependency
   ...
   artifactIdfoo/artifactId
   version[1.2,2.0)/version
 /dependency

 Maven ups the pom version to next development snapshot and commits the pom

 That will give you the ability to develop on ranges (which is nice and
 flexible) but release on pinned versions (which is exactly what you should
 be doing)

 If we cannot deliver something like that, then I think we should just drop
 ranges from the next major version of Maven.




 On 1 August 2013 06:19, Nestor Urquiza nestor.urqu...@gmail.com wrote:

 Hi,

 Let me give more information,

 I use an aggregator project for war1 project:
 modules
 module../jar1/module
 module../jar2/module
 module../war-inc/module
 module../war1/module
 /modules

 Another aggregator project for war2 project:
 modules
 module../jar1/module
 module../war-inc/module
 module../war1/module
 /modules

 Notice they both depend on jar1. The jar2 project in fact depends also on
 jar1. The war-inc project is used to keep common web resources for war1 and
 war2. We use maven overlay to marge those shared resources in a final war
 for each project.

 This is working like a charm. It has been working in fact now for 3 years.
 However everytime we need a release we need to start updating version
 unmbers in dependencies, doing prepare, then perform, you know the story.
 This is great when the team releases every once in a while. This is an
 issue
 if you want to release several times a day. About resources needed and so
 on
 that is something we are tackling via idempotent scripts so we are
 literally
 ready to make sure we increase the version number for all projects at once
 every time new code is committed to the version control server. We can
 handle that last part with jenkins, that is not a problem either. The only
 problem is how can I leverage on an existing tool (without building it
 myself) that would allow to release all modules from just one command.

 So back to Roger suggestion I added the version override dependency as per
 the github project, updated the version tag to point to 0.2.0 and run the
 below command (including actually the very same example from github):
 mvn clean install -Dversion.override=1.2.3-RC-5

 However none of the modules were changed including no change to the
 aggregator project either.

 Roger, have you used this plugin with aggregator 

Re: continuous releasing: versions:set and/or release:update-version to release an aggregator project

2013-08-01 Thread Stephen Connolly
the correct way I see to handle this is to support wildcards in
versions:set, e.g.

mvn versions:set -DgroupId=* -DartifactId=* -DoldVersion=*
-DnewVersion=1.2-SNAPSHOT

which would therefore match not just the invoked project but all projects
in the reactor.

The changes in MVERSIONS-131 go against the original spirit of the goal
(namely you cd to the module you want to change and ask for it to be
changed... the effective reactor is grown and all references down-stream of
that module's version change are updated accordingly.

If C does not have a parent effected by the change you are making then C
should not be changed by versions:set (without wildcard support)


On 1 August 2013 13:25, Stephen Colebourne scolebou...@joda.org wrote:

 I think this is perhaps related to problems I am seeing right now as well.

 Basically, the versions:set goal is buggy except in the classic case
 where the hierarchy of aggregation matches the hierarchy of
 inheritance.

 See
 http://jira.codehaus.org/browse/MVERSIONS-131
 and
 http://jira.codehaus.org/browse/MVERSIONS-184

 For example, given a tree:
 A (pom only)
 - B
 - C (pom only)
 - - D
 - - E
 where B and C are children of A
 and D and E are children of C
 and A aggregates B and C
 and C aggregates D and E
 In this case, versions:set plugin will work fine

 Now consider adding a new root R which aggregates A, but is not the parent
 of A.
 If you run versions:set on R it will only update R, and not A/B/C/D/E

 If you manually set the version of A, and then run versions:set on R,
 projects R/A/B/D/E will be updated, but not C. (which is pretty weird)

 The patch in MVERSIONS-131 sounds reasonable. Could it be evaluated?

 Stephen



 On 1 August 2013 09:55, Stephen Connolly
 stephen.alan.conno...@gmail.com wrote:
  How I want this to work is to have versions-maven-plugin have a way to
 undo
  versions:resolve-ranges (
  http://mojo.codehaus.org/versions-maven-plugin/resolve-ranges-mojo.html)
 -
  it would need to ensure that the lower bound of any unresolved range is
 the
  resolved version... [see below]
 
  We'd need to split preparationGoals in the release plugin... either into
  preparationGoals + verificationGoals or into initiationGoals +
  preparationGoals (I favour the latter as it preserves the semantics of
  preparationGoals... but the first one maps more correctly with what each
  set should be doing)
 
  Then this would become super easy...
 
  You develop with version ranges for your dependencies...
 
  The release plugin would have
  initiationGoals = versions:resolve-ranges versions:commit
  preparationGoals = clean verify
  completionGoals = versions:unresolve-ranges versions:commit
 
  So say your development pom has
 
  dependency
...
artifactIdfoo/artifactId
version[1.0,2.0)/version
  /dependency
 
  and the latest version of foo is 1.2
 
  When you kick off the release, the range gets resolved to
 
  dependency
...
artifactIdfoo/artifactId
version1.2?versions range=[1.0,2.0)?/version
  /dependency
 
  (My current thought is to use an XML PI to stash the old range)
 
  Then we invoke Maven again (because Maven doesn't re-read the poms) and
 do
  a clean verify to make sure that this all builds
 
  Then we tag the release
 
  Then we run completionGoals and versions:unresolve-ranges puts the
 version
  range back, but upping the lower bound
 
  dependency
...
artifactIdfoo/artifactId
version[1.2,2.0)/version
  /dependency
 
  Maven ups the pom version to next development snapshot and commits the
 pom
 
  That will give you the ability to develop on ranges (which is nice and
  flexible) but release on pinned versions (which is exactly what you
 should
  be doing)
 
  If we cannot deliver something like that, then I think we should just
 drop
  ranges from the next major version of Maven.
 
 
 
 
  On 1 August 2013 06:19, Nestor Urquiza nestor.urqu...@gmail.com wrote:
 
  Hi,
 
  Let me give more information,
 
  I use an aggregator project for war1 project:
  modules
  module../jar1/module
  module../jar2/module
  module../war-inc/module
  module../war1/module
  /modules
 
  Another aggregator project for war2 project:
  modules
  module../jar1/module
  module../war-inc/module
  module../war1/module
  /modules
 
  Notice they both depend on jar1. The jar2 project in fact depends also
 on
  jar1. The war-inc project is used to keep common web resources for war1
 and
  war2. We use maven overlay to marge those shared resources in a final
 war
  for each project.
 
  This is working like a charm. It has been working in fact now for 3
 years.
  However everytime we need a release we need to start updating version
  unmbers in dependencies, doing prepare, then perform, you know the
 story.
  This is great when the team releases every once in a while. This is an
  issue
  if you want to release several times a day. About resources needed 

Re: continuous releasing: versions:set and/or release:update-version to release an aggregator project

2013-08-01 Thread Patrick Turcotte

On 01/08/13 01:19 AM, Nestor Urquiza wrote:

Hi,

Let me give more information,

I use an aggregator project for war1 project:
 modules
 module../jar1/module
 module../jar2/module
 module../war-inc/module
 module../war1/module
 /modules

Another aggregator project for war2 project:
 modules
 module../jar1/module
 module../war-inc/module
 module../war1/module
 /modules

Notice they both depend on jar1. The jar2 project in fact depends also on
jar1. The war-inc project is used to keep common web resources for war1 and
war2. We use maven overlay to marge those shared resources in a final war
for each project.



From my point of view, this is not dependency, this is inclusion.

Assuming that :
jar1 and jar2 are independent projects
war-inc is common to all your war projects
war1 and war2 are to flavors of your project.

Each project/module should move at its own pace.

If war1 has a dependency on jar1, when war1 is updated, that person 
should check in your depot what is the most recent version and update 
accordingly.


You say it worked like a charm for 3 years. Maybe you had a problem that 
was invisible for 3 years and now becomes apparent because you are 
increasing the pace of releases.


My 2 cents.

Patrick

-
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org



Re: continuous releasing: versions:set and/or release:update-version to release an aggregator project

2013-08-01 Thread Stephen Colebourne
The problem is that as it currently stands, the plugin gives the
appearance of randomly choosing when to change versions. If you
consider the second example, the set goal changes R, A, B, D and E,
but not C, despite C being a child of A and in A's aggregator. Its
hard to not describe that as a bug.

Thus, I'm sure you can see the logic of what it is trying to do, but
as a user I just want it to change x to y wherever it sees it in the
whole aggregator build. If that needs a separate goal, then so be it.

I'm not sure how to proceed. The current plugin is useless for my
scenario without a separate script file to manually loop around the
structure. Its clearly useless for other people using aggregators.
You're wildcard suggestion might be an OK solution, but I'd have no
idea to implement it.

I simply want a goal that allows a multi-module build, where the
modules are versioned in lock-step, to be updated. Is that too much to
hope for?

Stephen


On 1 August 2013 13:50, Stephen Connolly
stephen.alan.conno...@gmail.com wrote:
 the correct way I see to handle this is to support wildcards in
 versions:set, e.g.

 mvn versions:set -DgroupId=* -DartifactId=* -DoldVersion=*
 -DnewVersion=1.2-SNAPSHOT

 which would therefore match not just the invoked project but all projects
 in the reactor.

 The changes in MVERSIONS-131 go against the original spirit of the goal
 (namely you cd to the module you want to change and ask for it to be
 changed... the effective reactor is grown and all references down-stream of
 that module's version change are updated accordingly.

 If C does not have a parent effected by the change you are making then C
 should not be changed by versions:set (without wildcard support)


 On 1 August 2013 13:25, Stephen Colebourne scolebou...@joda.org wrote:

 I think this is perhaps related to problems I am seeing right now as well.

 Basically, the versions:set goal is buggy except in the classic case
 where the hierarchy of aggregation matches the hierarchy of
 inheritance.

 See
 http://jira.codehaus.org/browse/MVERSIONS-131
 and
 http://jira.codehaus.org/browse/MVERSIONS-184

 For example, given a tree:
 A (pom only)
 - B
 - C (pom only)
 - - D
 - - E
 where B and C are children of A
 and D and E are children of C
 and A aggregates B and C
 and C aggregates D and E
 In this case, versions:set plugin will work fine

 Now consider adding a new root R which aggregates A, but is not the parent
 of A.
 If you run versions:set on R it will only update R, and not A/B/C/D/E

 If you manually set the version of A, and then run versions:set on R,
 projects R/A/B/D/E will be updated, but not C. (which is pretty weird)

 The patch in MVERSIONS-131 sounds reasonable. Could it be evaluated?

 Stephen



 On 1 August 2013 09:55, Stephen Connolly
 stephen.alan.conno...@gmail.com wrote:
  How I want this to work is to have versions-maven-plugin have a way to
 undo
  versions:resolve-ranges (
  http://mojo.codehaus.org/versions-maven-plugin/resolve-ranges-mojo.html)
 -
  it would need to ensure that the lower bound of any unresolved range is
 the
  resolved version... [see below]
 
  We'd need to split preparationGoals in the release plugin... either into
  preparationGoals + verificationGoals or into initiationGoals +
  preparationGoals (I favour the latter as it preserves the semantics of
  preparationGoals... but the first one maps more correctly with what each
  set should be doing)
 
  Then this would become super easy...
 
  You develop with version ranges for your dependencies...
 
  The release plugin would have
  initiationGoals = versions:resolve-ranges versions:commit
  preparationGoals = clean verify
  completionGoals = versions:unresolve-ranges versions:commit
 
  So say your development pom has
 
  dependency
...
artifactIdfoo/artifactId
version[1.0,2.0)/version
  /dependency
 
  and the latest version of foo is 1.2
 
  When you kick off the release, the range gets resolved to
 
  dependency
...
artifactIdfoo/artifactId
version1.2?versions range=[1.0,2.0)?/version
  /dependency
 
  (My current thought is to use an XML PI to stash the old range)
 
  Then we invoke Maven again (because Maven doesn't re-read the poms) and
 do
  a clean verify to make sure that this all builds
 
  Then we tag the release
 
  Then we run completionGoals and versions:unresolve-ranges puts the
 version
  range back, but upping the lower bound
 
  dependency
...
artifactIdfoo/artifactId
version[1.2,2.0)/version
  /dependency
 
  Maven ups the pom version to next development snapshot and commits the
 pom
 
  That will give you the ability to develop on ranges (which is nice and
  flexible) but release on pinned versions (which is exactly what you
 should
  be doing)
 
  If we cannot deliver something like that, then I think we should just
 drop
  ranges from the next major version of Maven.
 
 
 
 
  On 1 August 2013 06:19, Nestor Urquiza nestor.urqu...@gmail.com wrote:
 
  

Re: continuous releasing: versions:set and/or release:update-version to release an aggregator project

2013-08-01 Thread Stephen Connolly
first off versions:set is a @aggregator mojo. That means it only operates
on the -f specified pom file or the pom file in the working directory.

The goal is to update *that one project's version* it is not trying to
update other project versions.

So if you have

A
+B
|+C
|+D
+E
|+F
\G

where C and D inherits from B, F inherits from E and depends on C, A is an
aggregator with no parent-child relationship and G is a standalone project
that depends on F directly

Further we have in C

project
  parent
...
artifactIdB/artifactId
version2.1-SNAPSHOT/version
  /parent
  artifactIdC/artifactId
  !-- no version tag --
/project

and in D

project
  parent
...
artifactIdB/artifactId
version2.1-SNAPSHOT/version
  /parent
  artifactIdD/artifactId
  version2.1-SNAPSHOT/version
/project

from the root of the project you type

$ mvn versions:set -f B/pom.xml -DnewVersion=2.2-SNAPSHOT

What happens is that the goal's groupId defaults (as no property was set)
to the groupId of B, the artifactId defaults to the artifactId of B, the
oldVersion defaults to the current version of B and the plugin starts
building up its list of changes.

Initial list:

1. B:2.1-SNAPSHOT - B:2.2-SNAPSHOT

Now it starts looking to see if it can grow the effective reactor... the
parent directory has a pom and the pom has moduleB/module so it can
grow the effective reactor adding A and all the modules referenced by A
into it's list of poms to check. In A's parent directory there is no pom
with a moduleA/module so it stops growing the reactor. It now has the
following list of poms to check:

A,B,C,D,E,F,G

It looks to see what the effect of changing B's version is on that set of
poms

A - no change
B - no new changes
C - inherits version from parent = add C to list of changes and start
again

List of changes:

1. B:2.1-SNAPSHOT - B:2.2-SNAPSHOT
2. C:2.1-SNAPSHOT - C:2.2-SNAPSHOT

A - no change
B - no new changes
C - no new changes
D - parent changes, but D also explicitly sets version - leave D's
version unchanged
E - no change
F - dependency on C has changed - update dependency
G - no change

The list of changes has not been mutated this time, so we now have the
complete final models to apply

Then the poms get updated.

So if you start with everything at 2.1-SNAPSHOT, you will end up with

A:2.1-SNAPSHOT
B:2.2-SNAPSHOT
C:2.2-SNAPSHOT
D:2.1-SNAPSHOT
E:2.1-SNAPSHOT
F:2.1-SNAPSHOT
G:2.1-SNAPSHOT

*and* the reactor maintains its intra module reationships as the
dependencies have been updated.

If you want to achieve the same result without the -f or changing working
directory, you can tell it the groupId and artifactId of the change to
make, e.g.

$ mvn -DgroupId=... -DartifactId=B -DoldVersion=2.2-SNAPSHOT
-DnewVersion=2.1-SNAPSHOT

from the directory with A in it will undo all those changes






On 1 August 2013 14:17, Stephen Colebourne scolebou...@joda.org wrote:

 The problem is that as it currently stands, the plugin gives the
 appearance of randomly choosing when to change versions. If you
 consider the second example, the set goal changes R, A, B, D and E,
 but not C, despite C being a child of A and in A's aggregator. Its
 hard to not describe that as a bug.

 Thus, I'm sure you can see the logic of what it is trying to do, but
 as a user I just want it to change x to y wherever it sees it in the
 whole aggregator build. If that needs a separate goal, then so be it.

 I'm not sure how to proceed. The current plugin is useless for my
 scenario without a separate script file to manually loop around the
 structure. Its clearly useless for other people using aggregators.
 You're wildcard suggestion might be an OK solution, but I'd have no
 idea to implement it.

 I simply want a goal that allows a multi-module build, where the
 modules are versioned in lock-step, to be updated. Is that too much to
 hope for?

 Stephen


 On 1 August 2013 13:50, Stephen Connolly
 stephen.alan.conno...@gmail.com wrote:
  the correct way I see to handle this is to support wildcards in
  versions:set, e.g.
 
  mvn versions:set -DgroupId=* -DartifactId=* -DoldVersion=*
  -DnewVersion=1.2-SNAPSHOT
 
  which would therefore match not just the invoked project but all projects
  in the reactor.
 
  The changes in MVERSIONS-131 go against the original spirit of the goal
  (namely you cd to the module you want to change and ask for it to be
  changed... the effective reactor is grown and all references down-stream
 of
  that module's version change are updated accordingly.
 
  If C does not have a parent effected by the change you are making then C
  should not be changed by versions:set (without wildcard support)
 
 
  On 1 August 2013 13:25, Stephen Colebourne scolebou...@joda.org wrote:
 
  I think this is perhaps related to problems I am seeing right now as
 well.
 
  Basically, the versions:set goal is buggy except in the classic case
  where the hierarchy of aggregation matches the hierarchy of
  inheritance.
 
  See
  

Re: continuous releasing: versions:set and/or release:update-version to release an aggregator project

2013-08-01 Thread Ziga GREGORIC
If I understand this correctly, goal is to release 2 wars, which have some
jars and some wars in common. And, everything is part of the same
multi-module-maven-project.
That would be sth like:

-pom (all versions are defined only here)
 |- jar1
 |- jar2 (depends on  jar1)
 |- war-inc
 |- war A (depends on jar1 and overlays war-inc)
 |- war B (depends on jar2 and overlays war-inc)

With such structure and if you're using maven release plugin, both warA and
warB will be versioned automatically with each release.

My approach is to always release the whole project on the main pom level.
If I need to move from my version 1.2.07 to 1.3.00, I just find and replace
through the whole project current -SNAPSHOT into 1.3.00-SNAPSHOT (which is
defined only in version for the pom and in the parent/version of module
poms).




On Thu, Aug 1, 2013 at 3:36 PM, Stephen Connolly 
stephen.alan.conno...@gmail.com wrote:

 first off versions:set is a @aggregator mojo. That means it only operates
 on the -f specified pom file or the pom file in the working directory.

 The goal is to update *that one project's version* it is not trying to
 update other project versions.

 So if you have

 A
 +B
 |+C
 |+D
 +E
 |+F
 \G

 where C and D inherits from B, F inherits from E and depends on C, A is an
 aggregator with no parent-child relationship and G is a standalone project
 that depends on F directly

 Further we have in C

 project
   parent
 ...
 artifactIdB/artifactId
 version2.1-SNAPSHOT/version
   /parent
   artifactIdC/artifactId
   !-- no version tag --
 /project

 and in D

 project
   parent
 ...
 artifactIdB/artifactId
 version2.1-SNAPSHOT/version
   /parent
   artifactIdD/artifactId
   version2.1-SNAPSHOT/version
 /project

 from the root of the project you type

 $ mvn versions:set -f B/pom.xml -DnewVersion=2.2-SNAPSHOT

 What happens is that the goal's groupId defaults (as no property was set)
 to the groupId of B, the artifactId defaults to the artifactId of B, the
 oldVersion defaults to the current version of B and the plugin starts
 building up its list of changes.

 Initial list:

 1. B:2.1-SNAPSHOT - B:2.2-SNAPSHOT

 Now it starts looking to see if it can grow the effective reactor... the
 parent directory has a pom and the pom has moduleB/module so it can
 grow the effective reactor adding A and all the modules referenced by A
 into it's list of poms to check. In A's parent directory there is no pom
 with a moduleA/module so it stops growing the reactor. It now has the
 following list of poms to check:

 A,B,C,D,E,F,G

 It looks to see what the effect of changing B's version is on that set of
 poms

 A - no change
 B - no new changes
 C - inherits version from parent = add C to list of changes and start
 again

 List of changes:

 1. B:2.1-SNAPSHOT - B:2.2-SNAPSHOT
 2. C:2.1-SNAPSHOT - C:2.2-SNAPSHOT

 A - no change
 B - no new changes
 C - no new changes
 D - parent changes, but D also explicitly sets version - leave D's
 version unchanged
 E - no change
 F - dependency on C has changed - update dependency
 G - no change

 The list of changes has not been mutated this time, so we now have the
 complete final models to apply

 Then the poms get updated.

 So if you start with everything at 2.1-SNAPSHOT, you will end up with

 A:2.1-SNAPSHOT
 B:2.2-SNAPSHOT
 C:2.2-SNAPSHOT
 D:2.1-SNAPSHOT
 E:2.1-SNAPSHOT
 F:2.1-SNAPSHOT
 G:2.1-SNAPSHOT

 *and* the reactor maintains its intra module reationships as the
 dependencies have been updated.

 If you want to achieve the same result without the -f or changing working
 directory, you can tell it the groupId and artifactId of the change to
 make, e.g.

 $ mvn -DgroupId=... -DartifactId=B -DoldVersion=2.2-SNAPSHOT
 -DnewVersion=2.1-SNAPSHOT

 from the directory with A in it will undo all those changes






 On 1 August 2013 14:17, Stephen Colebourne scolebou...@joda.org wrote:

  The problem is that as it currently stands, the plugin gives the
  appearance of randomly choosing when to change versions. If you
  consider the second example, the set goal changes R, A, B, D and E,
  but not C, despite C being a child of A and in A's aggregator. Its
  hard to not describe that as a bug.
 
  Thus, I'm sure you can see the logic of what it is trying to do, but
  as a user I just want it to change x to y wherever it sees it in the
  whole aggregator build. If that needs a separate goal, then so be it.
 
  I'm not sure how to proceed. The current plugin is useless for my
  scenario without a separate script file to manually loop around the
  structure. Its clearly useless for other people using aggregators.
  You're wildcard suggestion might be an OK solution, but I'd have no
  idea to implement it.
 
  I simply want a goal that allows a multi-module build, where the
  modules are versioned in lock-step, to be updated. Is that too much to
  hope for?
 
  Stephen
 
 
  On 1 August 2013 13:50, Stephen Connolly
  stephen.alan.conno...@gmail.com wrote:
   the 

Re: continuous releasing: versions:set and/or release:update-version to release an aggregator project

2013-08-01 Thread Stephen Colebourne
Thanks for the detailed description, which I hope your making a web page out of.

Here is the current description Sets the current projects version,
updating the details of any child modules as necessary. From that I
conclude it will set the current project version and any child modules
necessary to make it all match.

It also says The set goal can be used to update the version of the
current module. It will automatically climb up local directories to
find the aggregation root. It will automatically update explicitly
referenced dependencies

Again, the expectation is that it will correctly set all the versions
I want it to set. From oldVersion to newVersion.

Basically, it seems to be being too clever for its own good.

As it is, even a batch script cnanot achieve my goal. I have projects like this:

A
B
C
- D
- E
F

where A and B are children of C, but not within the aggregator of C
(unlike D and E which are children and are within the aggregator). I
have a separate overall aggregator R that runs A, B and C.

If I set the version of C, and then try to set the version of A or B,
the plugin fails with Project version is inherited from parent.

So, I get that I'm trying to use the plugin for something you didn't
intend, but there isn't an alternative here that does do what I want,
right?

So, we really need a new goal - versions:set-aggregated - which sets
every matching version within an aggregated pom structure when called
from the root.

Would you want such a thing included in the versions plugin? Or does
it need to be a separate plugin?

I have to have something, as the alternative is stupid amounts of manual work.

Stephen



On 1 August 2013 14:36, Stephen Connolly
stephen.alan.conno...@gmail.com wrote:
 first off versions:set is a @aggregator mojo. That means it only operates
 on the -f specified pom file or the pom file in the working directory.

 The goal is to update *that one project's version* it is not trying to
 update other project versions.

 So if you have

 A
 +B
 |+C
 |+D
 +E
 |+F
 \G

 where C and D inherits from B, F inherits from E and depends on C, A is an
 aggregator with no parent-child relationship and G is a standalone project
 that depends on F directly

 Further we have in C

 project
   parent
 ...
 artifactIdB/artifactId
 version2.1-SNAPSHOT/version
   /parent
   artifactIdC/artifactId
   !-- no version tag --
 /project

 and in D

 project
   parent
 ...
 artifactIdB/artifactId
 version2.1-SNAPSHOT/version
   /parent
   artifactIdD/artifactId
   version2.1-SNAPSHOT/version
 /project

 from the root of the project you type

 $ mvn versions:set -f B/pom.xml -DnewVersion=2.2-SNAPSHOT

 What happens is that the goal's groupId defaults (as no property was set)
 to the groupId of B, the artifactId defaults to the artifactId of B, the
 oldVersion defaults to the current version of B and the plugin starts
 building up its list of changes.

 Initial list:

 1. B:2.1-SNAPSHOT - B:2.2-SNAPSHOT

 Now it starts looking to see if it can grow the effective reactor... the
 parent directory has a pom and the pom has moduleB/module so it can
 grow the effective reactor adding A and all the modules referenced by A
 into it's list of poms to check. In A's parent directory there is no pom
 with a moduleA/module so it stops growing the reactor. It now has the
 following list of poms to check:

 A,B,C,D,E,F,G

 It looks to see what the effect of changing B's version is on that set of
 poms

 A - no change
 B - no new changes
 C - inherits version from parent = add C to list of changes and start
 again

 List of changes:

 1. B:2.1-SNAPSHOT - B:2.2-SNAPSHOT
 2. C:2.1-SNAPSHOT - C:2.2-SNAPSHOT

 A - no change
 B - no new changes
 C - no new changes
 D - parent changes, but D also explicitly sets version - leave D's
 version unchanged
 E - no change
 F - dependency on C has changed - update dependency
 G - no change

 The list of changes has not been mutated this time, so we now have the
 complete final models to apply

 Then the poms get updated.

 So if you start with everything at 2.1-SNAPSHOT, you will end up with

 A:2.1-SNAPSHOT
 B:2.2-SNAPSHOT
 C:2.2-SNAPSHOT
 D:2.1-SNAPSHOT
 E:2.1-SNAPSHOT
 F:2.1-SNAPSHOT
 G:2.1-SNAPSHOT

 *and* the reactor maintains its intra module reationships as the
 dependencies have been updated.

 If you want to achieve the same result without the -f or changing working
 directory, you can tell it the groupId and artifactId of the change to
 make, e.g.

 $ mvn -DgroupId=... -DartifactId=B -DoldVersion=2.2-SNAPSHOT
 -DnewVersion=2.1-SNAPSHOT

 from the directory with A in it will undo all those changes






 On 1 August 2013 14:17, Stephen Colebourne scolebou...@joda.org wrote:

 The problem is that as it currently stands, the plugin gives the
 appearance of randomly choosing when to change versions. If you
 consider the second example, the set goal changes R, A, B, D and E,
 but not C, despite C being a child of A and in A's aggregator. Its
 

Re: continuous releasing: versions:set and/or release:update-version to release an aggregator project

2013-08-01 Thread Stephen Connolly
Please try 2.2-SNAPSHOT

It may or may have wildcard support that works and doesn't cause any
regressions...

I need to write some tests for the wildcard stuff.


On 1 August 2013 15:39, Stephen Colebourne scolebou...@joda.org wrote:

 Thanks for the detailed description, which I hope your making a web page
 out of.

 Here is the current description Sets the current projects version,
 updating the details of any child modules as necessary. From that I
 conclude it will set the current project version and any child modules
 necessary to make it all match.

 It also says The set goal can be used to update the version of the
 current module. It will automatically climb up local directories to
 find the aggregation root. It will automatically update explicitly
 referenced dependencies

 Again, the expectation is that it will correctly set all the versions
 I want it to set. From oldVersion to newVersion.

 Basically, it seems to be being too clever for its own good.

 As it is, even a batch script cnanot achieve my goal. I have projects like
 this:

 A
 B
 C
 - D
 - E
 F

 where A and B are children of C, but not within the aggregator of C
 (unlike D and E which are children and are within the aggregator). I
 have a separate overall aggregator R that runs A, B and C.

 If I set the version of C, and then try to set the version of A or B,
 the plugin fails with Project version is inherited from parent.

 So, I get that I'm trying to use the plugin for something you didn't
 intend, but there isn't an alternative here that does do what I want,
 right?

 So, we really need a new goal - versions:set-aggregated - which sets
 every matching version within an aggregated pom structure when called
 from the root.

 Would you want such a thing included in the versions plugin? Or does
 it need to be a separate plugin?

 I have to have something, as the alternative is stupid amounts of manual
 work.

 Stephen



 On 1 August 2013 14:36, Stephen Connolly
 stephen.alan.conno...@gmail.com wrote:
  first off versions:set is a @aggregator mojo. That means it only operates
  on the -f specified pom file or the pom file in the working directory.
 
  The goal is to update *that one project's version* it is not trying to
  update other project versions.
 
  So if you have
 
  A
  +B
  |+C
  |+D
  +E
  |+F
  \G
 
  where C and D inherits from B, F inherits from E and depends on C, A is
 an
  aggregator with no parent-child relationship and G is a standalone
 project
  that depends on F directly
 
  Further we have in C
 
  project
parent
  ...
  artifactIdB/artifactId
  version2.1-SNAPSHOT/version
/parent
artifactIdC/artifactId
!-- no version tag --
  /project
 
  and in D
 
  project
parent
  ...
  artifactIdB/artifactId
  version2.1-SNAPSHOT/version
/parent
artifactIdD/artifactId
version2.1-SNAPSHOT/version
  /project
 
  from the root of the project you type
 
  $ mvn versions:set -f B/pom.xml -DnewVersion=2.2-SNAPSHOT
 
  What happens is that the goal's groupId defaults (as no property was set)
  to the groupId of B, the artifactId defaults to the artifactId of B, the
  oldVersion defaults to the current version of B and the plugin starts
  building up its list of changes.
 
  Initial list:
 
  1. B:2.1-SNAPSHOT - B:2.2-SNAPSHOT
 
  Now it starts looking to see if it can grow the effective reactor... the
  parent directory has a pom and the pom has moduleB/module so it can
  grow the effective reactor adding A and all the modules referenced by A
  into it's list of poms to check. In A's parent directory there is no pom
  with a moduleA/module so it stops growing the reactor. It now has the
  following list of poms to check:
 
  A,B,C,D,E,F,G
 
  It looks to see what the effect of changing B's version is on that set of
  poms
 
  A - no change
  B - no new changes
  C - inherits version from parent = add C to list of changes and start
  again
 
  List of changes:
 
  1. B:2.1-SNAPSHOT - B:2.2-SNAPSHOT
  2. C:2.1-SNAPSHOT - C:2.2-SNAPSHOT
 
  A - no change
  B - no new changes
  C - no new changes
  D - parent changes, but D also explicitly sets version - leave D's
  version unchanged
  E - no change
  F - dependency on C has changed - update dependency
  G - no change
 
  The list of changes has not been mutated this time, so we now have the
  complete final models to apply
 
  Then the poms get updated.
 
  So if you start with everything at 2.1-SNAPSHOT, you will end up with
 
  A:2.1-SNAPSHOT
  B:2.2-SNAPSHOT
  C:2.2-SNAPSHOT
  D:2.1-SNAPSHOT
  E:2.1-SNAPSHOT
  F:2.1-SNAPSHOT
  G:2.1-SNAPSHOT
 
  *and* the reactor maintains its intra module reationships as the
  dependencies have been updated.
 
  If you want to achieve the same result without the -f or changing working
  directory, you can tell it the groupId and artifactId of the change to
  make, e.g.
 
  $ mvn -DgroupId=... -DartifactId=B -DoldVersion=2.2-SNAPSHOT
  -DnewVersion=2.1-SNAPSHOT
 
  from the 

Re: continuous releasing: versions:set and/or release:update-version to release an aggregator project

2013-08-01 Thread Stephen Colebourne
I pulled svn and tried it, and it didn't work in my case. It didn't
even set the root aggregator pom.

My set-aggregated goal is here and does work:
https://gist.github.com/jodastephen/6133391

Unfortunately, half my test project is private so its hard to
describe/publish logs.

Stephen



On 1 August 2013 16:25, Stephen Connolly
stephen.alan.conno...@gmail.com wrote:
 Please try 2.2-SNAPSHOT

 It may or may have wildcard support that works and doesn't cause any
 regressions...

 I need to write some tests for the wildcard stuff.


 On 1 August 2013 15:39, Stephen Colebourne scolebou...@joda.org wrote:

 Thanks for the detailed description, which I hope your making a web page
 out of.

 Here is the current description Sets the current projects version,
 updating the details of any child modules as necessary. From that I
 conclude it will set the current project version and any child modules
 necessary to make it all match.

 It also says The set goal can be used to update the version of the
 current module. It will automatically climb up local directories to
 find the aggregation root. It will automatically update explicitly
 referenced dependencies

 Again, the expectation is that it will correctly set all the versions
 I want it to set. From oldVersion to newVersion.

 Basically, it seems to be being too clever for its own good.

 As it is, even a batch script cnanot achieve my goal. I have projects like
 this:

 A
 B
 C
 - D
 - E
 F

 where A and B are children of C, but not within the aggregator of C
 (unlike D and E which are children and are within the aggregator). I
 have a separate overall aggregator R that runs A, B and C.

 If I set the version of C, and then try to set the version of A or B,
 the plugin fails with Project version is inherited from parent.

 So, I get that I'm trying to use the plugin for something you didn't
 intend, but there isn't an alternative here that does do what I want,
 right?

 So, we really need a new goal - versions:set-aggregated - which sets
 every matching version within an aggregated pom structure when called
 from the root.

 Would you want such a thing included in the versions plugin? Or does
 it need to be a separate plugin?

 I have to have something, as the alternative is stupid amounts of manual
 work.

 Stephen



 On 1 August 2013 14:36, Stephen Connolly
 stephen.alan.conno...@gmail.com wrote:
  first off versions:set is a @aggregator mojo. That means it only operates
  on the -f specified pom file or the pom file in the working directory.
 
  The goal is to update *that one project's version* it is not trying to
  update other project versions.
 
  So if you have
 
  A
  +B
  |+C
  |+D
  +E
  |+F
  \G
 
  where C and D inherits from B, F inherits from E and depends on C, A is
 an
  aggregator with no parent-child relationship and G is a standalone
 project
  that depends on F directly
 
  Further we have in C
 
  project
parent
  ...
  artifactIdB/artifactId
  version2.1-SNAPSHOT/version
/parent
artifactIdC/artifactId
!-- no version tag --
  /project
 
  and in D
 
  project
parent
  ...
  artifactIdB/artifactId
  version2.1-SNAPSHOT/version
/parent
artifactIdD/artifactId
version2.1-SNAPSHOT/version
  /project
 
  from the root of the project you type
 
  $ mvn versions:set -f B/pom.xml -DnewVersion=2.2-SNAPSHOT
 
  What happens is that the goal's groupId defaults (as no property was set)
  to the groupId of B, the artifactId defaults to the artifactId of B, the
  oldVersion defaults to the current version of B and the plugin starts
  building up its list of changes.
 
  Initial list:
 
  1. B:2.1-SNAPSHOT - B:2.2-SNAPSHOT
 
  Now it starts looking to see if it can grow the effective reactor... the
  parent directory has a pom and the pom has moduleB/module so it can
  grow the effective reactor adding A and all the modules referenced by A
  into it's list of poms to check. In A's parent directory there is no pom
  with a moduleA/module so it stops growing the reactor. It now has the
  following list of poms to check:
 
  A,B,C,D,E,F,G
 
  It looks to see what the effect of changing B's version is on that set of
  poms
 
  A - no change
  B - no new changes
  C - inherits version from parent = add C to list of changes and start
  again
 
  List of changes:
 
  1. B:2.1-SNAPSHOT - B:2.2-SNAPSHOT
  2. C:2.1-SNAPSHOT - C:2.2-SNAPSHOT
 
  A - no change
  B - no new changes
  C - no new changes
  D - parent changes, but D also explicitly sets version - leave D's
  version unchanged
  E - no change
  F - dependency on C has changed - update dependency
  G - no change
 
  The list of changes has not been mutated this time, so we now have the
  complete final models to apply
 
  Then the poms get updated.
 
  So if you start with everything at 2.1-SNAPSHOT, you will end up with
 
  A:2.1-SNAPSHOT
  B:2.2-SNAPSHOT
  C:2.2-SNAPSHOT
  D:2.1-SNAPSHOT
  E:2.1-SNAPSHOT
  F:2.1-SNAPSHOT
  G:2.1-SNAPSHOT
 
  

Re: continuous releasing: versions:set and/or release:update-version to release an aggregator project

2013-08-01 Thread Stephen Connolly
Yeah I need to write some tests...

You did use wildcards by the way? ie

$ mvn versions:set -DgroupId=\* -DartifactId=\* -DoldVersion=\*
-Dversion=...

Keep in mind you need to escape the wildcard appropriate for your shell or
it will replace with a glob that can never match


On Thursday, 1 August 2013, Stephen Colebourne wrote:

 I pulled svn and tried it, and it didn't work in my case. It didn't
 even set the root aggregator pom.

 My set-aggregated goal is here and does work:
 https://gist.github.com/jodastephen/6133391

 Unfortunately, half my test project is private so its hard to
 describe/publish logs.

 Stephen



 On 1 August 2013 16:25, Stephen Connolly
 stephen.alan.conno...@gmail.com wrote:
  Please try 2.2-SNAPSHOT
 
  It may or may have wildcard support that works and doesn't cause any
  regressions...
 
  I need to write some tests for the wildcard stuff.
 
 
  On 1 August 2013 15:39, Stephen Colebourne scolebou...@joda.org wrote:
 
  Thanks for the detailed description, which I hope your making a web page
  out of.
 
  Here is the current description Sets the current projects version,
  updating the details of any child modules as necessary. From that I
  conclude it will set the current project version and any child modules
  necessary to make it all match.
 
  It also says The set goal can be used to update the version of the
  current module. It will automatically climb up local directories to
  find the aggregation root. It will automatically update explicitly
  referenced dependencies
 
  Again, the expectation is that it will correctly set all the versions
  I want it to set. From oldVersion to newVersion.
 
  Basically, it seems to be being too clever for its own good.
 
  As it is, even a batch script cnanot achieve my goal. I have projects
 like
  this:
 
  A
  B
  C
  - D
  - E
  F
 
  where A and B are children of C, but not within the aggregator of C
  (unlike D and E which are children and are within the aggregator). I
  have a separate overall aggregator R that runs A, B and C.
 
  If I set the version of C, and then try to set the version of A or B,
  the plugin fails with Project version is inherited from parent.
 
  So, I get that I'm trying to use the plugin for something you didn't
  intend, but there isn't an alternative here that does do what I want,
  right?
 
  So, we really need a new goal - versions:set-aggregated - which sets
  every matching version within an aggregated pom structure when called
  from the root.
 
  Would you want such a thing included in the versions plugin? Or does
  it need to be a separate plugin?
 
  I have to have something, as the alternative is stupid amounts of manual
  work.
 
  Stephen
 
 
 
  On 1 August 2013 14:36, Stephen Connolly
  stephen.alan.conno...@gmail.com wrote:
   first off versions:set is a @aggregator mojo. That means it only
 operates
   on the -f specified pom file or the pom file in the working directory.
  
   The goal is to update *that one project's version* it is not trying to
   update other project versions.
  
   So if you have
  
   A
   +B
   |+C
   |+D
   +E
   |+F
   \G
  
   where C and D inherits from B, F inherits from E and depends on C, A
 is
  an
   aggregator with no parent-child relationship and G is a standalone
  project
   that depends on F directly
  
   Further we have in C
  
   project
 parent
   ...
   artifactIdB/artifactId
   version2.1-SNAPSHOT/version
 /parent
 artifactIdC/artifactId
 !-- no version tag --
   /project
  
   and in D
  
   project
 parent
   ...
   artifactIdB/artifactId
   version2.1-SNAPSHOT/version
 /parent
 artifactIdD/artifactI



-- 
Sent from my phone


Re: continuous releasing: versions:set and/or release:update-version to release an aggregator project

2013-08-01 Thread Stephen Colebourne
No, I didn't use the wildcards (they are very unatural UI for solving
what seems like a normal case)

With wildcards I got NPE:

[ERROR] Failed to execute goal org.codehaus.mojo:versions-maven-plugin:2.2-SNAPS
HOT:set (default-cli) on project london-dev: Execution default-cli of goal org.c
odehaus.mojo:versions-maven-plugin:2.2-SNAPSHOT:set failed. NullPointerException
 - [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal o
rg.codehaus.mojo:versions-maven-plugin:2.2-SNAPSHOT:set (default-cli) on project
 london-dev: Execution default-cli of goal org.codehaus.mojo:versions-maven-plug
in:2.2-SNAPSHOT:set failed.
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
.java:225)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProje
ct(LifecycleModuleBuilder.java:84)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProje
ct(LifecycleModuleBuilder.java:59)
at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBu
ild(LifecycleStarter.java:183)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(Lifecycl
eStarter.java:161)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Laun
cher.java:290)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.jav
a:230)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(La
uncher.java:409)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:
352)
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution default-c
li of goal org.codehaus.mojo:versions-maven-plugin:2.2-SNAPSHOT:set failed.
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(Default
BuildPluginManager.java:110)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
.java:209)
... 19 more
Caused by: java.lang.NullPointerException
at org.codehaus.mojo.versions.SetMojo.applyChange(SetMojo.java:258)
at org.codehaus.mojo.versions.SetMojo.execute(SetMojo.java:233)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(Default
BuildPluginManager.java:101)
... 20 more


Stephen

On 1 August 2013 18:25, Stephen Connolly
stephen.alan.conno...@gmail.com wrote:
 Yeah I need to write some tests...

 You did use wildcards by the way? ie

 $ mvn versions:set -DgroupId=\* -DartifactId=\* -DoldVersion=\*
 -Dversion=...

 Keep in mind you need to escape the wildcard appropriate for your shell or
 it will replace with a glob that can never match


 On Thursday, 1 August 2013, Stephen Colebourne wrote:

 I pulled svn and tried it, and it didn't work in my case. It didn't
 even set the root aggregator pom.

 My set-aggregated goal is here and does work:
 https://gist.github.com/jodastephen/6133391

 Unfortunately, half my test project is private so its hard to
 describe/publish logs.

 Stephen



 On 1 August 2013 16:25, Stephen Connolly
 stephen.alan.conno...@gmail.com wrote:
  Please try 2.2-SNAPSHOT
 
  It may or may have wildcard support that works and doesn't cause any
  regressions...
 
  I need to write some tests for the wildcard stuff.
 
 
  On 1 August 2013 15:39, Stephen Colebourne scolebou...@joda.org wrote:
 
  Thanks for the detailed description, which I hope your making a web page
  out of.
 
  Here is the current description Sets the current projects version,
  updating the details of any child modules as necessary. From that I
  conclude it will set the current project version and any child modules
  necessary to make it all match.
 
  It also says The set goal can be used to update the version of the
  current module. It will automatically climb up local directories to
  find the aggregation root. It will automatically update explicitly
  referenced dependencies
 
  Again, the expectation is that it will correctly set all the versions
  I want it to set. From oldVersion to newVersion.
 
  Basically, it seems to be being too clever for its own good.
 
  As it is, even a batch script cnanot achieve my goal. I have 

Re: continuous releasing: versions:set and/or release:update-version to release an aggregator project

2013-08-01 Thread Stephen Connolly
On Thursday, 1 August 2013, Stephen Colebourne wrote:

 No, I didn't use the wildcards (they are very unatural UI for solving
 what seems like a normal case)


 With wildcards I got NPE:


I'll have a look



 [ERROR] Failed to execute goal
 org.codehaus.mojo:versions-maven-plugin:2.2-SNAPS
 HOT:set (default-cli) on project london-dev: Execution default-cli of goal
 org.c
 odehaus.mojo:versions-maven-plugin:2.2-SNAPSHOT:set failed.
 NullPointerException
  - [Help 1]
 org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute
 goal o
 rg.codehaus.mojo:versions-maven-plugin:2.2-SNAPSHOT:set (default-cli) on
 project
  london-dev: Execution default-cli of goal
 org.codehaus.mojo:versions-maven-plug
 in:2.2-SNAPSHOT:set failed.
 at
 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
 .java:225)
 at
 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
 .java:153)
 at
 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
 .java:145)
 at
 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProje
 ct(LifecycleModuleBuilder.java:84)
 at
 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProje
 ct(LifecycleModuleBuilder.java:59)
 at
 org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBu
 ild(LifecycleStarter.java:183)
 at
 org.apache.maven.lifecycle.internal.LifecycleStarter.execute(Lifecycl
 eStarter.java:161)
 at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
 at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
 at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
 at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
 at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at
 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
 java:57)
 at
 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
 sorImpl.java:43)
 at java.lang.reflect.Method.invoke(Method.java:606)
 at
 org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Laun
 cher.java:290)
 at
 org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.jav
 a:230)
 at
 org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(La
 uncher.java:409)
 at
 org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:
 352)
 Caused by: org.apache.maven.plugin.PluginExecutionException: Execution
 default-c
 li of goal org.codehaus.mojo:versions-maven-plugin:2.2-SNAPSHOT:set failed.
 at
 org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(Default
 BuildPluginManager.java:110)
 at
 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
 .java:209)
 ... 19 more
 Caused by: java.lang.NullPointerException
 at org.codehaus.mojo.versions.SetMojo.applyChange(SetMojo.java:258)
 at org.codehaus.mojo.versions.SetMojo.execute(SetMojo.java:233)
 at
 org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(Default
 BuildPluginManager.java:101)
 ... 20 more


 Stephen

 On 1 August 2013 18:25, Stephen Connolly
 stephen.alan.conno...@gmail.com wrote:
  Yeah I need to write some tests...
 
  You did use wildcards by the way? ie
 
  $ mvn versions:set -DgroupId=\* -DartifactId=\* -DoldVersion=\*
  -Dversion=...
 
  Keep in mind you need to escape the wildcard appropriate for your shell
 or
  it will replace with a glob that can never match
 
 
  On Thursday, 1 August 2013, Stephen Colebourne wrote:
 
  I pulled svn and tried it, and it didn't work in my case. It didn't
  even set the root aggregator pom.
 
  My set-aggregated goal is here and does work:
  https://gist.github.com/jodastephen/6133391
 
  Unfortunately, half my test project is private so its hard to
  describe/publish logs.
 
  Stephen
 
 
 
  On 1 August 2013 16:25, Stephen Connolly
  stephen.alan.conno...@gmail.com wrote:
   Please try 2.2-SNAPSHOT
  
   It may or may have wildcard support that works and doesn't cause any
   regressions...
  
   I need to write some tests for the wildcard stuff.
  
  
   On 1 August 2013 15:39, Stephen Colebourne scolebou...@joda.org
 wrote:
  
   Thanks for the detailed description, which I hope your making a web
 page
   out of.
  
   Here is the current description Sets the current projects version,
   updating the details of any child modules as necessary. From that I
   conclude it will set the current project version and any child
 modules
   necessary to make it all match.
  
   It also says The set goal can be used to update the version of the
   current module. It will automatically climb up local directories to
   find the aggregation root. It will automatically update explicitly
   referenced dependencies
  
   Again, the expectation is that it will 

Re: continuous releasing: versions:set and/or release:update-version to release an aggregator project

2013-08-01 Thread Alejandro . Endo
This is exactly what I needed a couple of weeks ago. I came up with the
same procedure but discovered that the versions plugin doesn't support
unresolving ranges. Is this something that's in the works or it's just
something you wish  were there?



Alejandro Endo | Software Designer/Concepteur de logiciels




From:   Stephen Connolly stephen.alan.conno...@gmail.com
To: Maven Users List users@maven.apache.org,
Date:   2013-08-01 04:56 AM
Subject:Re: continuous releasing: versions:set and/or
release:update-version to release an aggregator project



How I want this to work is to have versions-maven-plugin have a way to undo
versions:resolve-ranges (
http://mojo.codehaus.org/versions-maven-plugin/resolve-ranges-mojo.html) -
it would need to ensure that the lower bound of any unresolved range is the
resolved version... [see below]

We'd need to split preparationGoals in the release plugin... either into
preparationGoals + verificationGoals or into initiationGoals +
preparationGoals (I favour the latter as it preserves the semantics of
preparationGoals... but the first one maps more correctly with what each
set should be doing)

Then this would become super easy...

You develop with version ranges for your dependencies...

The release plugin would have
initiationGoals = versions:resolve-ranges versions:commit
preparationGoals = clean verify
completionGoals = versions:unresolve-ranges versions:commit

So say your development pom has

dependency
  ...
  artifactIdfoo/artifactId
  version[1.0,2.0)/version
/dependency

and the latest version of foo is 1.2

When you kick off the release, the range gets resolved to

dependency
  ...
  artifactIdfoo/artifactId
  version1.2?versions range=[1.0,2.0)?/version
/dependency

(My current thought is to use an XML PI to stash the old range)

Then we invoke Maven again (because Maven doesn't re-read the poms) and do
a clean verify to make sure that this all builds

Then we tag the release

Then we run completionGoals and versions:unresolve-ranges puts the version
range back, but upping the lower bound

dependency
  ...
  artifactIdfoo/artifactId
  version[1.2,2.0)/version
/dependency

Maven ups the pom version to next development snapshot and commits the pom

That will give you the ability to develop on ranges (which is nice and
flexible) but release on pinned versions (which is exactly what you should
be doing)

If we cannot deliver something like that, then I think we should just drop
ranges from the next major version of Maven.




On 1 August 2013 06:19, Nestor Urquiza nestor.urqu...@gmail.com wrote:

 Hi,

 Let me give more information,

 I use an aggregator project for war1 project:
 modules
 module../jar1/module
 module../jar2/module
 module../war-inc/module
 module../war1/module
 /modules

 Another aggregator project for war2 project:
 modules
 module../jar1/module
 module../war-inc/module
 module../war1/module
 /modules

 Notice they both depend on jar1. The jar2 project in fact depends also on
 jar1. The war-inc project is used to keep common web resources for war1
and
 war2. We use maven overlay to marge those shared resources in a final war
 for each project.

 This is working like a charm. It has been working in fact now for 3
years.
 However everytime we need a release we need to start updating version
 unmbers in dependencies, doing prepare, then perform, you know the story.
 This is great when the team releases every once in a while. This is an
 issue
 if you want to release several times a day. About resources needed and so
 on
 that is something we are tackling via idempotent scripts so we are
 literally
 ready to make sure we increase the version number for all projects at
once
 every time new code is committed to the version control server. We can
 handle that last part with jenkins, that is not a problem either. The
only
 problem is how can I leverage on an existing tool (without building it
 myself) that would allow to release all modules from just one command.

 So back to Roger suggestion I added the version override dependency as
per
 the github project, updated the version tag to point to 0.2.0 and run the
 below command (including actually the very same example from github):
 mvn clean install -Dversion.override=1.2.3-RC-5

 However none of the modules were changed including no change to the
 aggregator project either.

 Roger, have you used this plugin with aggregator projects as I am trying?
 Could you provide some further guidance?

 My option is looking more and more like I will need to do something like:
 foreach module
   replace module version
   for each dependency
 if it is a module
   replace module version

 Then find out if mvn:prepare and mvn:perform will work after from the
 aggregator project releasing all necessary projects correctly. At this
 point
 I am already facing another issue. Let us suppose I update my two war
 

Re: continuous releasing: versions:set and/or release:update-version to release an aggregator project

2013-08-01 Thread Stephen Connolly
On Thursday, 1 August 2013, wrote:

 This is exactly what I needed a couple of weeks ago. I came up with the
 same procedure but discovered that the versions plugin doesn't support
 unresolving ranges. Is this something that's in the works or it's just
 something you wish  were there?


It is something I have been trying to figure out a nice way to do for the
past 2-3 years... It's never a high enough priority for me though as I just
update the poms and move on.

The first blocker is identifying if xml pi is preserved by the rewrite that
the release plugin does during prepare... If that isn't preserved we need
to fall back to magic comments which is sub- optimal to say the least



 Alejandro Endo | Software Designer/Concepteur de logiciels




 From:   Stephen Connolly stephen.alan.conno...@gmail.com javascript:;
 To: Maven Users List users@maven.apache.org javascript:;,
 Date:   2013-08-01 04:56 AM
 Subject:Re: continuous releasing: versions:set and/or
 release:update-version to release an aggregator project



 How I want this to work is to have versions-maven-plugin have a way to undo
 versions:resolve-ranges (
 http://mojo.codehaus.org/versions-maven-plugin/resolve-ranges-mojo.html) -
 it would need to ensure that the lower bound of any unresolved range is the
 resolved version... [see below]

 We'd need to split preparationGoals in the release plugin... either into
 preparationGoals + verificationGoals or into initiationGoals +
 preparationGoals (I favour the latter as it preserves the semantics of
 preparationGoals... but the first one maps more correctly with what each
 set should be doing)

 Then this would become super easy...

 You develop with version ranges for your dependencies...

 The release plugin would have
 initiationGoals = versions:resolve-ranges versions:commit
 preparationGoals = clean verify
 completionGoals = versions:unresolve-ranges versions:commit

 So say your development pom has

 dependency
   ...
   artifactIdfoo/artifactId
   version[1.0,2.0)/version
 /dependency

 and the latest version of foo is 1.2

 When you kick off the release, the range gets resolved to

 dependency
   ...
   artifactIdfoo/artifactId
   version1.2?versions range=[1.0,2.0)?/version
 /dependency

 (My current thought is to use an XML PI to stash the old range)

 Then we invoke Maven again (because Maven doesn't re-read the poms) and do
 a clean verify to make sure that this all builds

 Then we tag the release

 Then we run completionGoals and versions:unresolve-ranges puts the version
 range back, but upping the lower bound

 dependency
   ...
   artifactIdfoo/artifactId
   version[1.2,2.0)/version
 /dependency

 Maven ups the pom version to next development snapshot and commits the pom

 That will give you the ability to develop on ranges (which is nice and
 flexible) but release on pinned versions (which is exactly what you should
 be doing)

 If we cannot deliver something like that, then I think we should just drop
 ranges from the next major version of Maven.




 On 1 August 2013 06:19, Nestor Urquiza nestor.urqu...@gmail.com wrote:

  Hi,
 
  Let me give more information,
 
  I use an aggregator project for war1 project:
  modules
  module../jar1/module
  module../jar2/module
  module../war-inc/module
  module../war1/module
  /modules
 
  Another aggregator project for war2 project:
  modules
  module../jar1/module
  module../war-inc/module
  module../war1/module
  /modules
 
  Notice they both depend on jar1. The jar2 project in fact depends also on
  jar1. The war-inc project is used to keep common web resources for war1
 and
  war2. We use maven overlay to marge those shared resources in a final war
  for each project.
 
  This is working like a charm. It has been working in fact now for 3
 years.
  However everytime we need a release we need to start updating version
  unmbers in dependencies, doing prepare, then perform, you know the story.
  This is great when the team releases every once in a while. This is an
  issue
  if you want to release several times a day. About resources needed and so
  on
  that is something we are tackling via idempotent scripts so we are
  literally
  ready to make sure we increase the version number for all projects at
 once
  every time new code is committed to the version control server. We can
  handle that last part with jenkins, that is not a problem either. The
 only
  problem is how can I leverage on an existing tool (without building it
  myself) that would allow to release all modules from just oneDISCLAIMER:
 Privileged and/or Confidential information may be contained in this
 message. If you are not the addressee of this message, you may not
 copy, use or deliver this message to anyone. In such event, you
 should destroy the message and kindly notify the sender by reply
 e-mail. It is understood that opinions or conclusions that do not
 

Re: continuous releasing: versions:set and/or release:update-version to release an aggregator project

2013-08-01 Thread Stephen Connolly
Fixed in r18607 and I've redeployed a 2.2-SNAPSHOT

I now have test cases and I have verified that there are no regressions.

Just have to decide if there is anything else I will add before cutting a
release


On 1 August 2013 18:54, Stephen Connolly stephen.alan.conno...@gmail.comwrote:



 On Thursday, 1 August 2013, Stephen Colebourne wrote:

 No, I didn't use the wildcards (they are very unatural UI for solving
 what seems like a normal case)


 With wildcards I got NPE:


 I'll have a look



 [ERROR] Failed to execute goal
 org.codehaus.mojo:versions-maven-plugin:2.2-SNAPS
 HOT:set (default-cli) on project london-dev: Execution default-cli of
 goal org.c
 odehaus.mojo:versions-maven-plugin:2.2-SNAPSHOT:set failed.
 NullPointerException
  - [Help 1]
 org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute
 goal o
 rg.codehaus.mojo:versions-maven-plugin:2.2-SNAPSHOT:set (default-cli) on
 project
  london-dev: Execution default-cli of goal
 org.codehaus.mojo:versions-maven-plug
 in:2.2-SNAPSHOT:set failed.
 at
 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
 .java:225)
 at
 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
 .java:153)
 at
 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
 .java:145)
 at
 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProje
 ct(LifecycleModuleBuilder.java:84)
 at
 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProje
 ct(LifecycleModuleBuilder.java:59)
 at
 org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBu
 ild(LifecycleStarter.java:183)
 at
 org.apache.maven.lifecycle.internal.LifecycleStarter.execute(Lifecycl
 eStarter.java:161)
 at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
 at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
 at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
 at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
 at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at
 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
 java:57)
 at
 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
 sorImpl.java:43)
 at java.lang.reflect.Method.invoke(Method.java:606)
 at
 org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Laun
 cher.java:290)
 at
 org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.jav
 a:230)
 at
 org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(La
 uncher.java:409)
 at
 org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:
 352)
 Caused by: org.apache.maven.plugin.PluginExecutionException: Execution
 default-c
 li of goal org.codehaus.mojo:versions-maven-plugin:2.2-SNAPSHOT:set
 failed.
 at
 org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(Default
 BuildPluginManager.java:110)
 at
 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
 .java:209)
 ... 19 more
 Caused by: java.lang.NullPointerException
 at
 org.codehaus.mojo.versions.SetMojo.applyChange(SetMojo.java:258)
 at org.codehaus.mojo.versions.SetMojo.execute(SetMojo.java:233)
 at
 org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(Default
 BuildPluginManager.java:101)
 ... 20 more


 Stephen

 On 1 August 2013 18:25, Stephen Connolly
 stephen.alan.conno...@gmail.com wrote:
  Yeah I need to write some tests...
 
  You did use wildcards by the way? ie
 
  $ mvn versions:set -DgroupId=\* -DartifactId=\* -DoldVersion=\*
  -Dversion=...
 
  Keep in mind you need to escape the wildcard appropriate for your shell
 or
  it will replace with a glob that can never match
 
 
  On Thursday, 1 August 2013, Stephen Colebourne wrote:
 
  I pulled svn and tried it, and it didn't work in my case. It didn't
  even set the root aggregator pom.
 
  My set-aggregated goal is here and does work:
  https://gist.github.com/jodastephen/6133391
 
  Unfortunately, half my test project is private so its hard to
  describe/publish logs.
 
  Stephen
 
 
 
  On 1 August 2013 16:25, Stephen Connolly
  stephen.alan.conno...@gmail.com wrote:
   Please try 2.2-SNAPSHOT
  
   It may or may have wildcard support that works and doesn't cause any
   regressions...
  
   I need to write some tests for the wildcard stuff.
  
  
   On 1 August 2013 15:39, Stephen Colebourne scolebou...@joda.org
 wrote:
  
   Thanks for the detailed description, which I hope your making a web
 page
   out of.
  
   Here is the current description Sets the current projects version,
   updating the details of any child modules as necessary. From that I
   conclude it will set the current project version and any child
 modules
   necessary to make it 

Re: continuous releasing: versions:set and/or release:update-version to release an aggregator project

2013-08-01 Thread Stephen Colebourne
I'll try and test it tomorrow.

However, I'd encourage you to take a step back and think if the use of
three extra arguments to the plugin, which is primarily intended for
command line use, is a pleasant UI. I'd also encourage you to consider
whether updating a single GAV wherever it is found is really the same
concept as updating a tree (potentially with filtering to reduce its
scope).

Using
 mvn versions:set-aggregated
is a lot more pleasant than
 mvn versions:set -DgroupId=* -DartifactId=* -Dversion=*
particularly when the use cases are pretty different.

I don't think I'm asking to throw away today's changes, just to
repackage them in a more friendly way.

Stephen


On 2 August 2013 00:10, Stephen Connolly
stephen.alan.conno...@gmail.com wrote:
 Fixed in r18607 and I've redeployed a 2.2-SNAPSHOT

 I now have test cases and I have verified that there are no regressions.

 Just have to decide if there is anything else I will add before cutting a
 release


 On 1 August 2013 18:54, Stephen Connolly 
 stephen.alan.conno...@gmail.comwrote:



 On Thursday, 1 August 2013, Stephen Colebourne wrote:

 No, I didn't use the wildcards (they are very unatural UI for solving
 what seems like a normal case)


 With wildcards I got NPE:


 I'll have a look



 [ERROR] Failed to execute goal
 org.codehaus.mojo:versions-maven-plugin:2.2-SNAPS
 HOT:set (default-cli) on project london-dev: Execution default-cli of
 goal org.c
 odehaus.mojo:versions-maven-plugin:2.2-SNAPSHOT:set failed.
 NullPointerException
  - [Help 1]
 org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute
 goal o
 rg.codehaus.mojo:versions-maven-plugin:2.2-SNAPSHOT:set (default-cli) on
 project
  london-dev: Execution default-cli of goal
 org.codehaus.mojo:versions-maven-plug
 in:2.2-SNAPSHOT:set failed.
 at
 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
 .java:225)
 at
 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
 .java:153)
 at
 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
 .java:145)
 at
 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProje
 ct(LifecycleModuleBuilder.java:84)
 at
 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProje
 ct(LifecycleModuleBuilder.java:59)
 at
 org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBu
 ild(LifecycleStarter.java:183)
 at
 org.apache.maven.lifecycle.internal.LifecycleStarter.execute(Lifecycl
 eStarter.java:161)
 at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
 at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
 at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
 at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
 at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at
 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
 java:57)
 at
 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
 sorImpl.java:43)
 at java.lang.reflect.Method.invoke(Method.java:606)
 at
 org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Laun
 cher.java:290)
 at
 org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.jav
 a:230)
 at
 org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(La
 uncher.java:409)
 at
 org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:
 352)
 Caused by: org.apache.maven.plugin.PluginExecutionException: Execution
 default-c
 li of goal org.codehaus.mojo:versions-maven-plugin:2.2-SNAPSHOT:set
 failed.
 at
 org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(Default
 BuildPluginManager.java:110)
 at
 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
 .java:209)
 ... 19 more
 Caused by: java.lang.NullPointerException
 at
 org.codehaus.mojo.versions.SetMojo.applyChange(SetMojo.java:258)
 at org.codehaus.mojo.versions.SetMojo.execute(SetMojo.java:233)
 at
 org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(Default
 BuildPluginManager.java:101)
 ... 20 more


 Stephen

 On 1 August 2013 18:25, Stephen Connolly
 stephen.alan.conno...@gmail.com wrote:
  Yeah I need to write some tests...
 
  You did use wildcards by the way? ie
 
  $ mvn versions:set -DgroupId=\* -DartifactId=\* -DoldVersion=\*
  -Dversion=...
 
  Keep in mind you need to escape the wildcard appropriate for your shell
 or
  it will replace with a glob that can never match
 
 
  On Thursday, 1 August 2013, Stephen Colebourne wrote:
 
  I pulled svn and tried it, and it didn't work in my case. It didn't
  even set the root aggregator pom.
 
  My set-aggregated goal is here and does work:
  https://gist.github.com/jodastephen/6133391
 
  Unfortunately, 

Re: continuous releasing: versions:set and/or release:update-version to release an aggregator project

2013-08-01 Thread Stephen Connolly
On Friday, 2 August 2013, Stephen Colebourne wrote:

 I'll try and test it tomorrow.

 However, I'd encourage you to take a step back and think if the use of
 three extra arguments to the plugin, which is primarily intended for
 command line use, is a pleasant UI. I'd also encourage you to consider
 whether updating a single GAV wherever it is found is really the same
 concept as updating a tree (potentially with filtering to reduce its
 scope).

 Using
  mvn versions:set-aggregated
 is a lot more pleasant than
  mvn versions:set -DgroupId=* -DartifactId=* -Dversion=*
 particularly when the use cases are pretty different.

 I don't think I'm asking to throw away today's changes, just to
 repackage them in a more friendly way.


If you are going to do it on a regular basis you either script it or set up
a profile for doing it and then it's just

$ mvn -Pupdate-versions -DnewVersion=2.1-SNAPSHOT

Or if you want to have the profile auto-activated

$ mvn -Dupdated.version=2.1-SNAPSHOT

Where the profile has a defaultGoal of `validate` and you bind
`versions:set` to that phase and inject all the configured wildcards and
inject newVersion as ${updated.version}

That gives you a very error-proof repeated process.

The use of wildcard-like behaviour is not a good plan, so being slightly
more cumbersome on the CLI is a bonus from my PoV.

I prefer to encourage best practice by making non-best practice harder...
Making it impossible is not a good idea IMHO.

- Stephen




 Stephen


 On 2 August 2013 00:10, Stephen Connolly
 stephen.alan.conno...@gmail.com wrote:
  Fixed in r18607 and I've redeployed a 2.2-SNAPSHOT
 
  I now have test cases and I have verified that there are no regressions.
 
  Just have to decide if there is anything else I will add before cutting a
  release
 
 
  On 1 August 2013 18:54, Stephen Connolly 
 stephen.alan.conno...@gmail.comwrote:
 
 
 
  On Thursday, 1 August 2013, Stephen Colebourne wrote:
 
  No, I didn't use the wildcards (they are very unatural UI for solving
  what seems like a normal case)
 
 
  With wildcards I got NPE:
 
 
  I'll have a look
 
 
 
  [ERROR] Failed to execute goal
  org.codehaus.mojo:versions-maven-plugin:2.2-SNAPS
  HOT:set (default-cli) on project london-dev: Execution default-cli of
  goal org.c
  odehaus.mojo:versions-maven-plugin:2.2-SNAPSHOT:set failed.
  NullPointerException
   - [Help 1]
  org.apache.maven.lifecycle.LifecycleExecutionException: Failed to
 execute
  goal o
  rg.codehaus.mojo:versions-maven-plugin:2.2-SNAPSHOT:set (default-cli)
 on
  project
   london-dev: Execution default-cli of goal
  org.codehaus.mojo:versions-maven-plug
  in:2.2-SNAPSHOT:set failed.
  at
  org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
  .java:225)
  at
  org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
  .java:153)
  at
  org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
  .java:145)
  at
  org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProje
  ct(LifecycleModuleBuilder.java:84)
  at
  org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProje
  ct(LifecycleModuleBuilder.java:59)
  at
  org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBu
  ild(LifecycleStarter.java:183)
  at
  org.apache.maven.lifecycle.internal.LifecycleStarter.execute(Lifecycl
  eStarter.java:161)
  at
 org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
  at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
  at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
  at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
  at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at
  sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
  java:57)
  at
  sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
  sorImpl.java:43)
  at java.lang.reflect.Method.invoke(Method.java:606)
  at
  org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Laun
  cher.java:290)
  at
  org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.jav
  a:230)
  at
  org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(La
  uncher.java:409)
  at
  org.codehau



-- 
Sent from my phone


Re: continuous releasing: versions:set and/or release:update-version to release an aggregator project

2013-08-01 Thread Stephen Colebourne
On 2 August 2013 01:10, Stephen Connolly
stephen.alan.conno...@gmail.com wrote:
 The use of wildcard-like behaviour is not a good plan, so being slightly
 more cumbersome on the CLI is a bonus from my PoV.

 I prefer to encourage best practice by making non-best practice harder...
 Making it impossible is not a good idea IMHO.

I'm trying to argue that that your perception of it being bad practice
is out of place. It is very common for teams to want to have a tree of
modules that are all versioned together with a single version number.
It is your implementation choice to make it wildcarded. What I, and
others, need is to simply replace all matching versions in a single
aggregated reactor with a new version. While these two approaches may
seem similar, I humbly suggest that they are conceptually different.

Stephen

-
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org



Re: continuous releasing: versions:set and/or release:update-version to release an aggregator project

2013-08-01 Thread Stephen Connolly
On Friday, 2 August 2013, Stephen Colebourne wrote:

 On 2 August 2013 01:10, Stephen Connolly
 stephen.alan.conno...@gmail.com javascript:; wrote:
  The use of wildcard-like behaviour is not a good plan, so being slightly
  more cumbersome on the CLI is a bonus from my PoV.
 
  I prefer to encourage best practice by making non-best practice harder...
  Making it impossible is not a good idea IMHO.

 I'm trying to argue that that your perception of it being bad practice
 is out of place. It is very common for teams to want to have a tree of
 modules that are all versioned together with a single version number.


Then they all should have a common parent and use parent version
inheritance.

If the version number is supposed to be the same, then you use inheritance
from the root and versions:set takes care of it all for you.

If the version number is not supposed to be the same, then versions set
does exactly what you want also, allowing you to carve version number
increments through the entire tree for those portions which are supposed to
be the same.

It is your implementation choice to make it wildcarded. What I, and
 others, need is to simply replace all matching versions in a single
 aggregated reactor with a new version. While these two approaches may
 seem similar, I humbly suggest that they are conceptually different.

 Stephen

 -
 To unsubscribe, e-mail: users-unsubscr...@maven.apache.org javascript:;
 For additional commands, e-mail: users-h...@maven.apache.orgjavascript:;



-- 
Sent from my phone


Re: continuous releasing: versions:set and/or release:update-version to release an aggregator project

2013-07-31 Thread Roger Brechbühl
don't know exactly how your project setup is, but maybe this approach could
help:
https://github.com/rotscher/emerging/tree/version.override-with_maven_install-2.4

We use it for an automated continuous delivery process. Please note, that
there is a release 0.2.0 available despite what the documentation says.


2013/7/31 Ron Wheeler rwhee...@artifact-software.com

 On 30/07/2013 4:46 PM, Nestor Urquiza wrote:

 Ron,

 Thanks for your feedback.

 I have been using Maven the same way like you since 2007. However things
 have changed in our current shop. We want continuous releasing and for
 that
 we desperately need to automate versioning.

 Can you explain how this affects version numbers.

  We do not need to maintain it
 manually anymore, any commit is a potential release for us.

 I am not sure what this means.
 It is true for some cases depending on what you mean by a commit.
 We commit a lot of projects to Subversion that are just a set of
 classes/packages that one programmer has finished but the project may
 require some more work to complete the changes that need to be done to
 satisfy all of thegoals of the release.



 Anybody else? I am trying really hard to stick to Maven as I have been
 doing
 for so many years since I departed from ant. This two plugins could
 resolve
 the continuous delivery support while still keeping maven as the tool for
 organizing the project.

 Perhaps you can add more details about what you are looking for and what
 alternative solutions would get you back on the road again.
 Perhaps you can explain how Maven could identify all the projects that
 need changing if the company is developing or supporting multiple
 applications.
 At any time we have 4 or 5 applications that are active in one sense or
 another and I am sure that big organizations might have 50+ applications
 under active support or development.
 Identifying which ones you want to have the same version will require a
 list somewhere.

 I hope that these comments help.

 Ron



 Thanks!
 - Nestor



 --
 View this message in context: http://maven.40175.n5.nabble.**
 com/continuous-releasing-**versions-set-and-or-release-**
 update-version-to-release-an-**aggregator-project-**
 tp5766275p5766321.htmlhttp://maven.40175.n5.nabble.com/continuous-releasing-versions-set-and-or-release-update-version-to-release-an-aggregator-project-tp5766275p5766321.html
 Sent from the Maven - Users mailing list archive at Nabble.com.

 --**--**-
 To unsubscribe, e-mail: 
 users-unsubscribe@maven.**apache.orgusers-unsubscr...@maven.apache.org
 For additional commands, e-mail: users-h...@maven.apache.org




 --
 Ron Wheeler
 President
 Artifact Software Inc
 email: rwhee...@artifact-software.com
 skype: ronaldmwheeler
 phone: 866-970-2435, ext 102


 --**--**-
 To unsubscribe, e-mail: 
 users-unsubscribe@maven.**apache.orgusers-unsubscr...@maven.apache.org
 For additional commands, e-mail: users-h...@maven.apache.org




Re: continuous releasing: versions:set and/or release:update-version to release an aggregator project

2013-07-31 Thread Nestor Urquiza
Hi,

Let me give more information,

I use an aggregator project for war1 project:
modules
module../jar1/module
module../jar2/module
module../war-inc/module
module../war1/module
/modules

Another aggregator project for war2 project:
modules
module../jar1/module
module../war-inc/module
module../war1/module
/modules

Notice they both depend on jar1. The jar2 project in fact depends also on
jar1. The war-inc project is used to keep common web resources for war1 and
war2. We use maven overlay to marge those shared resources in a final war
for each project.

This is working like a charm. It has been working in fact now for 3 years.
However everytime we need a release we need to start updating version
unmbers in dependencies, doing prepare, then perform, you know the story.
This is great when the team releases every once in a while. This is an issue
if you want to release several times a day. About resources needed and so on
that is something we are tackling via idempotent scripts so we are literally
ready to make sure we increase the version number for all projects at once
every time new code is committed to the version control server. We can
handle that last part with jenkins, that is not a problem either. The only
problem is how can I leverage on an existing tool (without building it
myself) that would allow to release all modules from just one command.

So back to Roger suggestion I added the version override dependency as per
the github project, updated the version tag to point to 0.2.0 and run the
below command (including actually the very same example from github):
mvn clean install -Dversion.override=1.2.3-RC-5

However none of the modules were changed including no change to the
aggregator project either.

Roger, have you used this plugin with aggregator projects as I am trying?
Could you provide some further guidance?

My option is looking more and more like I will need to do something like:
foreach module
  replace module version
  for each dependency 
if it is a module
  replace module version

Then find out if mvn:prepare and mvn:perform will work after from the
aggregator project releasing all necessary projects correctly. At this point
I am already facing another issue. Let us suppose I update my two war
multi-pom aggregator projects, all the modules and the dependencies to be
version 2.2000.0-SNAPSHOT.

I would expect a command line the below to change the version number in all
modules to 2.2000.0, tag it preparing it for release as well as setting the
next development version to be 2.2000.1-SNAPSHOT for all modules as well.
Finally each dependency that is a module itself should also be changed to
2.2000.1-SNAPSHOT. But that does not work either:
mvn clean --batch-mode release:prepare -DdryRun=true
-DautoVersionSubmodules=true -DreleaseVersion=2.2000.0
-DdevelopmentVersion=2.2000.1-SNAPSHOT

The resulting pom.xml.tag gets updated even dependencies but the
pom.xml.next gets updated (2.2000.1-SNAPSHOT) only for the version number of
each project, nor for the dependencies which do stay the same
(2.2000.0-SNAPSHOT). Will this be considered a bug?

I hope it is clear now what I need and also what the current issues are: Not
only versions:set and release:update-version do not work for
multipom-aggregator projects but in addition release:prepare together with
all the flags above which according to the documentation should be allowing
to fix a version for a release.

I guess an alternative question could be how to provide continuous delivery
with multi-pom aggregator maven projects. To be honest I do not like the
idea of forcing all versions, it just looked the logical approach after we
decided we really did not care for internal versions, they could be handled
ideally automatically. However thinking twice about this I would like better
maven to accept a pattern to set part of the snapshot version number while
changing another part of it, for example with a mask:

-DversionNumberIncrementalMask=x.1.0

which would translate to:
Leave first digit as is
Increase by 1 second digit
set to zero third digit

Of course I would expect this to be applied to all snapshots.

Thanks for the answers so far,

- Nestor




--
View this message in context: 
http://maven.40175.n5.nabble.com/continuous-releasing-versions-set-and-or-release-update-version-to-release-an-aggregator-project-tp5766275p5766461.html
Sent from the Maven - Users mailing list archive at Nabble.com.

-
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org



Re: continuous releasing: versions:set and/or release:update-version to release an aggregator project

2013-07-30 Thread Ron Wheeler

Our solution was to stop synchronizing release versions of dependencies.

We were perfectly happy using software from third parties (Apache, 
Spring, etc.) with different versions and ceased to see any reason why 
version 1.10 of the WAR file could not depend on version 1.8 of one of 
our jar files if, in fact, 1.8 was the correct code for 1.10 of our release.


Once we got over the block in our minds, it worked very well.

As a side benefit, we could also quickly see what modules had actually 
changed in each release. If the jar had a 1.10.x version, then it had 
changed; if it was 1.9, then the new release had not required a change 
in that part of the code.


We had 80+ projects making up the application so the reduction in 
workload was appreciated.


It also made it easier to understand the scope of a new release since we 
took an hour at the start of the release cycle and identified the affect 
expected on each module so that I had a pretty good idea about the work 
that was going to be required and the number of project tasks that were 
about to start up.



Ron

On 30/07/2013 11:10 AM, Nestor Urquiza wrote:

Hi guys,

We use two aggregator projects to release two WAR applications which have
some shared JAR projects.

This aggregators are not parents. Strictly speaking the JAR projects do not
reference back the aggregators.

As a developer I would like to set a release version not only for the
aggregator but for all modules it references.

It looks like the below command will only change the version for the
aggregator project. Apparently the only way to make the modules change
their version as well will be to make the aggregator a real parent. This
would demand us having really two parents for certain JARS while not for
others. Definitely inheritance is not the way to go but aggregation. This
command will not fail with an ERROR but the modules will not get updated.
pre
mvn clean install versions:set -DnewVersion=2.12345678.0
/pre

It looks like the below command is not working:
pre
mvn -U release:update-versions -DdevelopmentVersion=2.12345679.0
/pre

As I get:
Required goal not found: release:update-versions in
org.apache.maven.plugins:maven-release-plugin:2.0-beta-8

I have found some archives about the subject but no real solution to this
problem so far.

Thanks in advance,

- Nestor Urquiza




--
Ron Wheeler
President
Artifact Software Inc
email: rwhee...@artifact-software.com
skype: ronaldmwheeler
phone: 866-970-2435, ext 102


-
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org



Re: continuous releasing: versions:set and/or release:update-version to release an aggregator project

2013-07-30 Thread Nestor Urquiza
Ron,

Thanks for your feedback.

I have been using Maven the same way like you since 2007. However things
have changed in our current shop. We want continuous releasing and for that
we desperately need to automate versioning. We do not need to maintain it
manually anymore, any commit is a potential release for us.

Anybody else? I am trying really hard to stick to Maven as I have been doing
for so many years since I departed from ant. This two plugins could resolve
the continuous delivery support while still keeping maven as the tool for
organizing the project.

Thanks!
- Nestor



--
View this message in context: 
http://maven.40175.n5.nabble.com/continuous-releasing-versions-set-and-or-release-update-version-to-release-an-aggregator-project-tp5766275p5766321.html
Sent from the Maven - Users mailing list archive at Nabble.com.

-
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org



Re: continuous releasing: versions:set and/or release:update-version to release an aggregator project

2013-07-30 Thread Ron Wheeler

On 30/07/2013 4:46 PM, Nestor Urquiza wrote:

Ron,

Thanks for your feedback.

I have been using Maven the same way like you since 2007. However things
have changed in our current shop. We want continuous releasing and for that
we desperately need to automate versioning.

Can you explain how this affects version numbers.

We do not need to maintain it
manually anymore, any commit is a potential release for us.

I am not sure what this means.
It is true for some cases depending on what you mean by a commit.
We commit a lot of projects to Subversion that are just a set of 
classes/packages that one programmer has finished but the project may 
require some more work to complete the changes that need to be done to 
satisfy all of thegoals of the release.




Anybody else? I am trying really hard to stick to Maven as I have been doing
for so many years since I departed from ant. This two plugins could resolve
the continuous delivery support while still keeping maven as the tool for
organizing the project.
Perhaps you can add more details about what you are looking for and what 
alternative solutions would get you back on the road again.
Perhaps you can explain how Maven could identify all the projects that 
need changing if the company is developing or supporting multiple 
applications.
At any time we have 4 or 5 applications that are active in one sense 
or another and I am sure that big organizations might have 50+ 
applications under active support or development.
Identifying which ones you want to have the same version will require a 
list somewhere.


I hope that these comments help.

Ron



Thanks!
- Nestor



--
View this message in context: 
http://maven.40175.n5.nabble.com/continuous-releasing-versions-set-and-or-release-update-version-to-release-an-aggregator-project-tp5766275p5766321.html
Sent from the Maven - Users mailing list archive at Nabble.com.

-
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org





--
Ron Wheeler
President
Artifact Software Inc
email: rwhee...@artifact-software.com
skype: ronaldmwheeler
phone: 866-970-2435, ext 102


-
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org