使用project.parent.version作为Maven 3中模块的版本的警告

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

我很想知道将模块的版本绑定到父版本的真正问题是什么,如果有的话? 或者,当任何expression式(无论是否为project.parent.version)用于版本元素时,都会发生这种情况。

我很想知道将模块的版本绑定到父版本的真正问题是什么,如果有的话? 或者,当任何expression式(无论是否为project.parent.version)用于版本元素时,都会发生这种情况。

那么,这将是很容易testing。 因为我很好奇,我只是用下面的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>元素使用一个属性没有多大意义(至less不能用于project.version),并且很高兴maven抱怨它。

而如果你想在子模块中使用父pom版本, 只要从子poms中移除<version>标签 ,它们就会inheritance父类的版本。 你现在在做什么只是没用。