Maven - 控制父 pom 和子 pom 以继承父 pom 版本

Maven - versioning parent pom and child pom to inherit parent pom version

我正在使用 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 构建我的工件时, 我看到在我的 .m2 文件夹中构建了 jars,但是 project.version 没有替换为实际版本,即 1.0-SNAPSHOT。

  1. 我的 .m2 存储库中每个工件的父 pom and/or 子 pom 是否具有指定的版本,还是 project.version

  2. 我什至应该在我的父 pom.xml 中将 project.version 指定为 属性 吗? Maven 文档声明 project.version 默认可用。我也尝试 mvn install post 在我的父 pom 中删除 project.version 属性 但生成的工件在我的 .m2 文件夹中仍然具有 {project.version} 的版本而不是实际的版本

  3. 如何在我的父 pom 中设置一个版本并让我的所有子 pom 具有相同的版本。例如,我想在 workorder pom 中设置一个版本,workorder-client pom 也应该继承相同的版本。

你 parent pom 应该是这样的:

<groupId>com.mygoogle.sample</groupId>
<artifactId>workorder</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>

你的 child pom 应该是这样的:

<parent>
   <groupId>com.mygoogle.sample</groupId>
   <version>1.0-SNAPSHOT</version>
   <artifactId>workorder</artifactId>     
</parent>

<artifactId>workorder-client</artifactId>
<packaging>jar</packaging>

这将有助于顺利维护 parent 和 child(s) 之间的版本控制。
下次当你想要更改版本时,只需在指向 parent pom 目录的同时使用以下命令即可。

mvn versions:set -DnewVersion=2.0-SNAPSHOT