Hi!
I'm working on a few different maven projects with several modules in each.
Most of the modules have dependencies to other modules within the same
project and also to other projects. Since the development in most of these
projects go in parallell, most of the dependencies are towards snapshot
versions.

Now, my problem is that when I want to make a release, I have to go through
30+ poms and replace snapshot versions with the new versions, check in the
new poms, tag, and then I have to replace the versions to new snapshot
versions... A lot of work, and it's easy to make a mistake.

So, I'm trying to put the version numbers in properties instead, so I only
have to update the properties of the parent pom in each project.

Here's a few sample poms of two projects, where "myotherproject" depends on
"myproject":

<!-- parent pom for myproject -->
<project xmlns="http://maven.apache.org/POM/4.0.0";
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd";>
      <modelVersion>4.0.0</modelVersion>.
      <groupId>my.project</groupId>
      <version>${my.project.version}</version>
      <artifactId>myparentpom</artifactId>
      <packaging>pom</packaging>
      <modules>
            <module>myjar</module>
      </modules>
      <properties>
            <my.project.version>1.2-SNAPSHOT</my.project.version>
      </properties>
</project>

<!-- jar module pom for myproject -->
<project xmlns="http://maven.apache.org/POM/4.0.0";
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd";>
      <modelVersion>4.0.0</modelVersion>.
      <groupId>my.project</groupId>
      <version>${my.project.version}</version>
      <artifactId>myjar</artifactId>
      <packaging>jar</packaging>
      <parent>
            <groupId>my.project</groupId>
            <artifactId>myparentpom</artifactId>
            <version>${my.project.version}</version>
      </parent>>
</project>>

<!-- parent pom for myotherproject -->
<project xmlns="http://maven.apache.org/POM/4.0.0";
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd";>
      <modelVersion>4.0.0</modelVersion>.
      <groupId>my.other.project</groupId>
      <version>${my.other.project.version}</version>.
      <artifactId>myotherparentpom</artifactId>
      <packaging>pom</packaging>
      <modules>
            <module>myotherjar</module>
      </modules>
      <properties>
            <my.project.version>1.2-SNAPSHOT</my.project.version>

<my.other.project.version>1.1-SNAPSHOT</my.other.project.version>
      </properties>
</project>

<!-- jar module pom for myotherproject -->
<project xmlns="http://maven.apache.org/POM/4.0.0";
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd";>
      <modelVersion>4.0.0</modelVersion>.
      <groupId>my.other.project</groupId>
      <version>${my.other.project.version}</version>.
      <artifactId>myotherjar</artifactId>}
      <packaging>jar</packaging>
      <parent>
            <groupId>my.other.project</groupId>
            <artifactId>myotherparentpom</artifactId>
            <version>${my.other.project.version}</version>
      </parent>>
      <dependencies>.
            <dependency>>.
                  <groupId>my.project</groupId>
                  <artifactId>myjar</artifactId>
                  <version>${my.project.version}</version>
            </dependency>
      </dependencies>.
</project>


Now, I can succesfully build myproject, but when I build myotherproject I
get this error:

[INFO]
------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO]
------------------------------------------------------------------------
[INFO] Failed to resolve artifact.

GroupId: my.project
ArtifactId: myparentpom
Version: ${my.project.version}

Reason: Unable to download the artifact from any repository

  my.project:myparentpom:pom:${my.project.version}

from the specified remote repositories:
  central (http://repo1.maven.org/maven2).


When I look into my local repository I can see that the files and
directories of myproject correctly has the 1.2-SNAPSHOT version. But when I
look inside the saved poms in the repo I can see that they still contain
the ${my.project.version} variable, and it seems that maven is unable to
dereference that variable when resolving the dependency.

So, am I missing something here? Do you have any other suggestions on how
to parametrisize the version numbers?

Thanx in advance,
/Anders


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to