Hi all,

I'm currently stuck in a problem of chicken and egg problem. I already read
and thought a lot about it. But as I don't think I'll find the best way
alone, I'm trying the list.

I've read again the following recent thread
http://www.nabble.com/Version-Number-Inheritance-td23304326.html but if I
read it correctly it doesn't speak about the problem I'm encountering :
managing the dependency versions. Obviously speaking about the dependencies
included in the release being done. I hope I'm being clear :-/.

Let's explain a bit more the problem with a description and some excerpt of
my poms. I want to release a multimodule project with the same version (as
Spring does, for example. They have a bunch of jars, but they always are
synced with the same 2.5.1 or so when released. It's far simpler to manage
it when you need many jars of org.springframework).
The thing is some of those modules depend on each other. So when releasing
them I want to update the dependencies version when it is one of the modules
being released.

And I want to do it with the littlest set of command. For example, with
something like
mvn --batch-mode release:prepare -DautoVersionSubmodules=true
-DreleaseVersion=2.3.0 -DdevelopmentVersion=2.4.0-SNAPSHOT

But this won't work in one pass currently because of the dependencies
between modules.

Simplified, it gives the following.
* parent pom
** projectA
** projectB, which depends on projectA

PARENT POM :
<project>
    <groupId>fr.ourcompany</groupId>
    <artifactId>our-parent</artifactId>
    <version>2.3.0-SNAPSHOT</version>
    <packaging>pom</packaging>
...
<modules>
 <module>../projectA</module>
 <module>../projectB</module>
</modules>
</project>

Project A
<project>
    <parent>
        <groupId>fr.ourcompany</groupId>
        <artifactId>our-parent</artifactId>
        <version>2.3.0-SNAPSHOT</version>
        <relativePath>../our-parent</relativePath>
    </parent>
    <groupId>fr.ourcompany</groupId>
    <artifactId>projectA</artifactId>
 ...
</project>

ProjectB
<project>
    <parent>
        <groupId>fr.ourcompany</groupId>
        <artifactId>our-parent</artifactId>
        <version>2.3.0-SNAPSHOT</version>
        <relativePath>../our-parent</relativePath>
    </parent>
    <groupId>fr.ourcompany</groupId>
    <artifactId>projectA</artifactId>

   <dependencies>
     <dependency>
        <artifactId>projectA</artifactId>
        <version>2.3.0-SNAPSHOT</version>
     <dependency>
   </dependencies>
 ...
</project>

When 2.3.0 is released, projectB 2.3.0 must have its dependency to projectA
set to 2.3.0 too. And set to 2.4.0-SNAPSHOT in the next development version
(according to the parameter value up in this mail).

I feel maven-release-plugin could handle this quite correctly. What is the
best way to handle this? Obviously, I'll be happy to write a documentation
about this kind of release if I'm able to do it.
Thanks in advance.

Cheers.
-- 
Baptiste <Batmat> MATHUS - http://batmat.net
Sauvez un arbre,
Mangez un castor !

Reply via email to