【发布时间】:2017-02-22 13:39:49
【问题描述】:
我正在使用 Maven 3.x,我的父 pom 和子 pom 中有以下结构。
父pom
<groupId>com.mygoogle.sample</groupId>
<artifactId>workorder</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<properties>
<project.version>1.0-SNAPSHOT</project.version>
</properties>
我有一个如下的子 pom
<parent>
<groupId>com.mygoogle.sample</groupId>
<version>${project.version}</version>
<artifactId>workorder</artifactId>
</parent>
<artifactId>workorder-client</artifactId>
<packaging>jar</packaging>
当我使用 mvn install 构建我的工件时, 我看到 jars 在我的 .m2 文件夹中构建,但 project.version 没有替换为实际版本,即 1.0-SNAPSHOT。
我的 .m2 存储库中每个工件的父 pom 和/或子 pom 是否具有指定的版本或者是 project.version
我是否应该将 project.version 指定为我父 pom.xml 中的属性? maven 文档指出 project.version 可以通过默认方式获得。我还尝试了 mvn install post删除父 pom 中的 project.version 属性,但生成的工件在我的 .m2 文件夹中仍然具有 {project.version} 的版本,而不是实际版本
如何在我的父 pom 中设置一个版本并让我的所有子 pom 具有相同的版本。例如,我想在 workorder pom 中设置一个版本,并且 workorder-client pom 也应该继承相同的版本。
【问题讨论】:
-
您需要指定
<version>并且不能依赖project.version属性:它不在<parent>元素中进行评估。 -
@Tunaki,刚刚编辑了我的原始帖子,我本来打算在父 pom 中指定实际版本,但在我现在已经更正的帖子中指定了 {project.version} 属性。因此,通过上述设置,为什么我的子 pom 没有在父 pom 中获取属性。对最初的困惑表示歉意。
-
正如链接问题中的回答,您不能拥有
<version>${project.version}</version>。<parent>元素中必须有<version>1.0-SNAPSHOT</version>。