Avertissement sur l’utilisation de project.parent.version comme version d’un module dans Maven 3

Dans maven multi-modules projects où je veux que chaque module garde toujours la même version que le parent, j’ai généralement fait quelque chose comme ceci dans le module pom.xml:

 com.groupId parentArtifactId 1.1-SNAPSHOT  com.groupId artifactId jar ${project.parent.version} name 

Depuis que j’ai commencé à utiliser maven 3.0-alpha-5, je reçois l’avertissement suivant.

 [WARNING] [WARNING] Some problems were encountered while building the effective model for com.groupid.artifactId:name:jar:1.1-SNAPSHOT [WARNING] 'version' contains an expression but should be a constant. @ com.groupid.artifactId:name::${project.parent.version}, /Users/whaley/path/to/project/child/pom.xml [WARNING] [WARNING] It is highly recommended to fix these problems because they threaten the stability of your build. [WARNING] [WARNING] For this reason, future Maven versions might no longer support building such malformed projects. [WARNING] 

Je suis curieux de savoir quel est le véritable problème de lier la version d’un module à la version parente, le cas échéant? Ou s’agit-il d’un cas d’avertissement général lorsqu’une expression, qu’elle soit project.parent.version ou non, est utilisée pour l’élément version.

Je suis curieux de savoir quel est le véritable problème de lier la version d’un module à la version parente, le cas échéant? Ou s’agit-il d’un cas d’avertissement général lorsqu’une expression, qu’elle soit project.parent.version ou non, est utilisée pour l’élément version.

Eh bien, ce serait facile à tester. Parce que j’étais curieux, je l’ai juste fait pour vous en utilisant le pom suivant:

  4.0.0  parent com.mycompany 1.0-SNAPSHOT  com.mycompany module ${myversion} module http://maven.apache.org  1.0-SNAPSHOT  ...  

Et maven se plaint en effet:

 [WARNING] 'version' contains an expression but should be a constant. @ com.mycompany:module:${myversion}, /home/pascal/Projects/maven-maven3-testcase/module/pom.xml 

Pour être honnête, je pense que maven est juste ici, cela n’a pas beaucoup de sens d’utiliser une propriété pour l’élément (du moins pas pour project.version) et c’est bien d’avoir maven qui s’en plaint.

Et si vous souhaitez utiliser la version parent pom dans des sous-modules, supprimez simplement la des poms enfants , ils hériteront de la version du parent. Ce que vous faites actuellement est tout simplement inutile.