que - Advertencia sobre el uso de project.parent.version como la versión de un módulo en Maven 3
project version maven (1)
En los proyectos de varios módulos de Maven en los que quiero que cada uno de los módulos mantenga siempre la misma versión que el principal, generalmente he hecho algo como lo siguiente en el pom.xml del módulo:
<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>
Desde que comencé a usar maven 3.0-alpha-5, recibo la siguiente advertencia por hacerlo.
[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]
Tengo curiosidad por saber cuál es el verdadero problema al vincular la versión de un módulo a la versión principal, si corresponde. O se trata de un caso de advertencia general cuando cualquier expresión, independientemente de si se trata de project.parent.version, se usa para el elemento de versión.
Tengo curiosidad por saber cuál es el verdadero problema al vincular la versión de un módulo a la versión principal, si corresponde. O se trata de un caso de advertencia general cuando cualquier expresión, independientemente de si se trata de project.parent.version, se usa para el elemento de versión.
Bueno, eso sería fácil de probar. Porque tenía curiosidad, lo hice por ti usando el siguiente pom:
<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>
Y maven de hecho se está quejando:
[WARNING] ''version'' contains an expression but should be a constant. @ com.mycompany:module:${myversion}, /home/pascal/Projects/maven-maven3-testcase/module/pom.xml
Para ser sincero, creo que maven está aquí, no tiene mucho sentido usar una propiedad para el elemento <version>
(al menos no para project.version) y es bueno tener maven quejándose de ello.
Y si desea utilizar la versión padre pom en submódulos, simplemente elimine la etiqueta <version>
de los poms secundarios , ellos heredarán la versión de los padres. Lo que estás haciendo actualmente es inútil.