Предупреждение при использовании project.parent.version как версия модуля в Знатоке 3

В проектах мультимодуля знатока, где я хочу, чтобы каждый из модулей всегда сохранил ту же версию как родитель, я обычно делал что-то как следующее в pom.xml модуля:

  <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>

Так как я начал использовать знатока 3,0 альфы 5, я получаю соблюдающее предупреждение для того, чтобы сделать так.

[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]

Мне любопытно знать, какова настоящая проблема со связью версии модуля к родительской версии, если таковые имеются? Или это случай общего предупреждения, когда любое выражение, независимо от того, является ли это project.parent.version, используется для элемента версии.

76
задан 2 revs, 2 users 96% 14 July 2015 в 13:59
поделиться

1 ответ

Мне любопытно узнать, в чем реальная проблема с привязкой версии модуля к родительской версии, если таковая существует? Или это случай общего предупреждения, когда любое выражение, независимо от того, является ли оно проектом.parent.version, используется для элемента версии.

Ну, это было бы легко проверить. Потому что мне было любопытно, я просто сделал это для вас, используя следующий 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>

И maven действительно жалуется:

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

Честно говоря, я думаю, что maven прямо здесь, нет особого смысла использовать свойство для элемента <версия> (по крайней мере, не для project.version), и приятно, что maven жалуется на это.

И если вы хотите использовать родительскую pom версию в субмодулях, просто удалите тег из дочерних poms, они унаследуют версию от родителя. То, что вы в данный момент делаете, ненужно.

90
ответ дан 24 November 2019 в 11:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: