Avertissement sur l'utilisation project.parent.version que la version d'un module dans Maven 3

StackOverflow https://stackoverflow.com/questions/1981151

  •  22-09-2019
  •  | 
  •  

Question

Dans Maven projets multi-modules où je veux que chacun des modules de toujours garder la même version que le parent, je l'ai fait généralement quelque chose comme ce qui suit dans le pom.xml du module:

  <parent>
    <groupId>com.groupId</groupId>
    <artifactId>parentArtifactId</artifactId>
    <version>1.1-SNAPSHOT</version>
  </parent>

  <groupId>com.groupId</groupId>
  <artifactId>artifactId</artifactId>
  <packaging>jar</packaging>
  <version>${project.parent.version}</version>
  <name>name</name>

Depuis que j'utilise Maven 3.0 alpha-5, je reçois l'avertissement suivant pour le faire.

[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 ce que le vrai problème avec attacher la version d'un module à la version mère est, le cas échéant? Ou est-ce un cas d'un avertissement général quand toute expression, peu importe que ce soit project.parent.version, est utilisé pour l'élément version.

Était-ce utile?

La solution

  

Je suis curieux de savoir ce que le vrai problème avec attacher la version d'un module à la version mère est, le cas échéant? Ou est-ce un cas d'un avertissement général quand toute expression, peu importe que ce soit project.parent.version, est utilisé pour l'élément version.

Eh bien, ce serait facile à tester. Parce que je suis curieux, je l'ai juste fait pour vous en utilisant la pom suivante:

<project>
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <artifactId>parent</artifactId>
    <groupId>com.mycompany</groupId>
    <version>1.0-SNAPSHOT</version>
  </parent>
  <groupId>com.mycompany</groupId>
  <artifactId>module</artifactId>
  <version>${myversion}</version>
  <name>module</name>
  <url>http://maven.apache.org</url>
  <properties>
    <myversion>1.0-SNAPSHOT</myversion>
  </properties>
  ...
</project>

maven est en effet plaint:

[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 ici, il ne fait pas beaucoup de sens d'utiliser une propriété pour l'élément <version> (du moins pas pour project.version) et il est agréable d'avoir maven plaindre.

Et si vous souhaitez utiliser la version pom parent dans les sous-modules, il suffit de retirer l'étiquette de <version> des poms enfants , ils hériteront la version du parent. Ce que vous faites actuellement est inutile.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top