Frage

In maven Multi-Modul Projekten, bei denen ich jedes der Module will immer die gleiche Version wie die Eltern zu halten, habe ich in der Regel so etwas wie die in der pom.xml des Moduls folgenden getan:

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

Da ich mit Maven gestartet 3.0-alpha-5, ich die folgende Warnung erhalten dafür.

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

Ich bin neugierig zu wissen, was das eigentliche Problem mit einem Modul-Version an die Mutter Version zu binden ist, wenn überhaupt? Oder ist dies ein Fall einer allgemeinen Warnung, wenn jeder Ausdruck, und zwar unabhängig davon, ob es project.parent.version wird für die Version Element verwendet wird.

War es hilfreich?

Lösung

  

Ich bin neugierig zu wissen, was das eigentliche Problem mit einem Modul-Version an die Mutter Version zu binden ist, wenn überhaupt? Oder ist dies ein Fall einer allgemeinen Warnung, wenn jeder Ausdruck, und zwar unabhängig davon, ob es project.parent.version wird für die Version Element verwendet wird.

Nun, das wäre einfach zu testen. Weil ich neugierig war, ich habe es nur für Sie folgende pom mit:

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

Und Maven ist in der Tat beschweren:

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

Um ehrlich zu sein, denke ich, dass Maven hier ist, ist es nicht viel Sinn macht, eine Eigenschaft für das <version> Element zu verwenden (zumindest nicht für project.version) und es ist schön, Maven haben darüber beschweren.

Und wenn Sie die übergeordnete pom Version in Submodule verwenden mögen, entfernen Sie einfach den <version> Tag aus dem Kind Poms , werden sie die Version von den übergeordneten erben. Was Sie gerade tun, ist nicht notwendig.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top