Advertencia sobre el uso de project.parent.version como la versión de un módulo en Maven 3

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

  •  22-09-2019
  •  | 
  •  

Pregunta

En los proyectos de varios módulos Maven en el que necesito cada uno de los módulos a mantener siempre la misma versión que el padre, he realiza normalmente algo así como lo siguiente en 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 empecé a usar Maven 3.0-alfa-5, me sale el siguiente mensaje de advertencia para 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 de atar la versión de un módulo para la versión de los padres es, si las hay? O se trata de un caso de una advertencia general, cuando cualquier expresión, independientemente de si se trata de project.parent.version, se utiliza para el elemento de versión.

¿Fue útil?

Solución

  

Tengo curiosidad por saber cuál es el verdadero problema de atar la versión de un módulo para la versión de los padres es, si las hay? O se trata de un caso de una advertencia general, cuando cualquier expresión, independientemente de si se trata de project.parent.version, se utiliza para el elemento de versión.

Bueno, eso sería fácil de prueba. Porque tenía curiosidad, sólo lo hice para usted utilizando la 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 es de hecho quejaba:

[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 honesto, creo que es experta aquí, que no tiene mucho sentido utilizar una propiedad para el elemento <version> (al menos no para project.version) y es bueno tener maven quejarse de ello.

Y si desea utilizar la versión pom padres en submódulos, acaba de quitar la etiqueta <version> de los niños poms , que heredará la versión del padre. Lo que está haciendo actualmente es innecesario.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top