Arnoud,

You don't need to set the project version if it's the same as the parent.
It's inherited from the parent.

/Anders

On Tue, Oct 26, 2010 at 21:00, Arnaud bourree <[email protected]>wrote:

> 2010/10/26 Babak Farhang <[email protected]>:
> > Hi everyone,
> >
> > I have a nested, multi-module project in which every module's pom
> > inherits from a root pom. I'd like to find a way to avoid duplicating
> > the parent pom version number in every submodule. The aim is to keep
> > the version number for these submodules in sync with one another, from
> > one release to the next. Here's a strategy I've tried using
> > profiles.xml that doesn't quite work.
> >
> > profiles.xml:
> > ==========
> >
> > <profilesXml>
> >  <profiles>
> >    <profile>
> >      <id>projectProfile</id>
> >      <activation>
> >        <activeByDefault>true</activeByDefault>
> >      </activation>
> >      <properties>
> >         <!-- This is the property injection I'm having trouble with: -->
> >         <rootVersion>1.0.2</rootVersion>
> >      </properties>
> >    </profile>
> >  </profiles>
> > </profilesXml>
> >
> >
> > pom.xml (root):
> > ============
> >
> > <?xml version="1.0" encoding="UTF-8"?>
> > <project 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>com.myorg</groupId>
> >  <artifactId>root</artifactId>
> >  <name>Root</name>
> >  <version>${rootVersion}</version>
> >  <packaging>pom</packaging>
> >  <modules>
> >    <module>util</module>
> >  </modules>
> >  <properties>
> >    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
> >
>  <org.springframework.version>3.0.2.RELEASE</org.springframework.version>
> >    <servlet.api.version>2.5</servlet.api.version>
> >    <log4j.version>1.2.16</log4j.version>
> >    <junit.version>3.8.1</junit.version>
> >    <httpclient.version>3.1</httpclient.version>
> >    <dnsjava.version>2.0.6</dnsjava.version>
> >  </properties>
> >
> >  <build>
> >    <plugins>
> >      <plugin>
> >        <groupId>org.apache.maven.plugins</groupId>
> >        <artifactId>maven-compiler-plugin</artifactId>
> >        <configuration>
> >          <source>1.6</source>
> >          <target>1.6</target>
> >          <encoding>UTF-8</encoding>
> >          <debug>true</debug>
> >          <showDeprecation>true</showDeprecation>
> >          <showWarnings>true</showWarnings>
> >          <compilerArgument>-Xlint</compilerArgument>
> >          <compilerArguments>
> >            <Xmaxerrs>10000000</Xmaxerrs>
> >            <Xmaxwarns>10000000</Xmaxwarns>
> >          </compilerArguments>
> >          <verbose/>
> >        </configuration>
> >      </plugin>
> >
> >      <plugin>
> >        <groupId>org.apache.maven.plugins</groupId>
> >        <artifactId>maven-surefire-plugin</artifactId>
> >        <configuration>
> >          <forkMode>pertest</forkMode>
> >          <argLine>-Xms256m -Xmx1024m</argLine>
> >          <testFailureIgnore>false</testFailureIgnore>
> >          <skip>false</skip>
> >          <includes>
> >            <include>**/*Test.java</include>
> >          </includes>
> >        </configuration>
> >      </plugin>
> >    </plugins>
> >  </build>
> > </project>
> >
> >
> > util/pom.xml:
> > ==========
> > <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>
> >  <parent>
> >    <artifactId>root</artifactId>
> >    <groupId>com.myorg</groupId>
> >    <version>${rootVersion}</version>
> >  </parent>
> >
> >  <artifactId>util</artifactId>
> >  <name>Common Utilities</name>
> >  <packaging>jar</packaging>
> >  <dependencies>
> >    <dependency>
> >      <groupId>junit</groupId>
> >      <artifactId>junit</artifactId>
> >      <version>${junit.version}</version>
> >      <scope>test</scope>
> >    </dependency>
> >
> >    <dependency>
> >      <groupId>log4j</groupId>
> >      <artifactId>log4j</artifactId>
> >      <version>${log4j.version}</version>
> >    </dependency>
> >
> >  </dependencies>
> > </project>
> >
> >
> > ================================
> >
> > On mvn install'ing from the root directory of the project here's the
> > directory I get:
> >
> > % tree ~/.m2/repository/com/myorg
> > myorg/
> > |-- root
> > |   |-- 1.0.2
> > |   |   `-- root-1.0.2.pom
> > |   `-- maven-metadata-local.xml
> > `-- util
> >    |-- ${rootVersion}
> >    |   |-- util-${rootVersion}.jar
> >    |   `-- util-${rootVersion}.pom
> >    `-- maven-metadata-local.xml
> >
> > Note that ${rootVersion} was not transformed to 1.0.2.  Also, here's
> > what's inside the root pom file after it's been installed:
> >
> > % cat ~/m2/repository/com/myorg/root/1.0.2/root-1.0.2.pom
> > <?xml version="1.0" encoding="UTF-8"?>
> > <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
> xsi:schemaLocatio
> > n="http://maven.apache.org/POM/4.0.0
> http://maven.apache.org/maven-v4_0_0.xsd";>
> >  <modelVersion>4.0.0</modelVersion>
> >  <groupId>com.myorg</groupId>
> >  <artifactId>root</artifactId>
> >  <name>Root</name>
> >  <version>${rootVersion}</version>   <!-- why wasn't 1.0.2 injected here?
> -->
> >  <packaging>pom</packaging>
> >  <modules>
> >    <module>util</module>
> >  </modules>
> >  ..
> >
> > And here's the directory structrure I was hoping to get:
> >
> > myorg/
> > |-- root
> > |   |-- 1.0.2
> > |   |   `-- root-1.0.2.pom
> > |   `-- maven-metadata-local.xml
> > `-- util
> >    |-- 1.0.2
> >    |   |-- util-1.0.2.jar
> >    |   `-- util-1.0.2.pom
> >    `-- maven-metadata-local.xml
> >
> >
> >
> >
> >
> > Any insights as to how I should approach this?
>
> How Maven can evaluate ${rootVersion}? It needs ${rootVersion} to load
> parent pom and then find ${rootVersion}
> So for parent version you cannot used property.
>
> What you can do is: set root version in parent definition like
> <version>1.0</version>
> And in pom version set it ${parent.version} like
> <version>${parent.version}</version>
> Then when update root version, you only need to change parent version
> of all your pom xpath: /project/parent/version
>
> Regards,
>
> Arnaud.
>
>
> >
> > -Babak
> >
> > PS This email is somewhat related to
> > http://www.mail-archive.com/[email protected]/msg113594.html
> > There, the concern is to avoid duplicating version numbers for
> > dependent artifacts: here the concern is to avoid duplicating the
> > version number of the parent POM.
> > Started this new thread in order to disambiguate these 2 related but
> > still separate issues.
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [email protected]
> > For additional commands, e-mail: [email protected]
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>

Reply via email to