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

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

  •  22-09-2019
  •  | 
  •  

Вопрос

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

Поскольку я начал использовать maven 3.0-alpha-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, используется для элемента version.

Это было полезно?

Решение

Мне любопытно узнать, в чем реальная проблема с привязкой версии модуля к родительской версии, если таковая имеется?Или это случай общего предупреждения, когда любое выражение, независимо от того, является ли оно project.parent.version, используется для элемента 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 находится прямо здесь, не имеет особого смысла использовать свойство для <version> элемент (по крайней мере, не для project.version), и приятно, что maven жалуется на это.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top