Comment est l'espace réservé ${project.version}
résolu pour les propriétés gérées du parent pom? Je m'attendais à ce qu'il soit résolu globalement, donc lorsque le pom parent a la version 2, ${project.version}
serait également résolu en version 2.
Dans le pom parent, j'ai:
<groupId>my.group</groupId>
<artifactId>parent</artifactId>
<version>2</version>
<packaging>pom</packaging>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>my.group</groupId>
<artifactId>dep</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
Chez l'enfant j'utilise
<parent>
<groupId>my.group</groupId>
<artifactId>parent</artifactId>
<version>2</version>
</parent>
<version>1</version>
<artifactId>child</artifactId>
Mais l'artefact my.group.dep.1.jar
est utilisé, au lieu de my.group.dep.2.jar
. Ainsi, l'espace réservé est résolu dans la version du projet en utilisant la dépendance gérée, et non dans celles du projet en définissant la dépendance.
Est-ce un comportement attendu? J'utilise maven 3.0.4.
Vous devez ignorer <version>
tag dans l'enfant, mais conservez le <parent><version> ... </parent>
tag.
http://maven.Apache.org/guides/introduction/introduction-to-the-pom.html#Project_Inheritance
Un facteur à noter est que ces variables sont traitées après l'héritage comme indiqué ci-dessus. Cela signifie que si un projet parent utilise une variable, sa définition dans l'enfant, et non dans le parent, sera celle finalement utilisée.