Maven - 版本化父pom和子pom继承父pom版本

时间:2016-10-13 12:21:29

标签: maven maven-3

我正在使用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。

  1. 每个工件的.m2存储库中的父pom和/或子pom是否具有指定的版本,或者是project.version

  2. 我是否应该将project.version指定为父pom中的属性。 maven文档声明project.version可以通过defualt获得。我还尝试了mvn install post删除了我的父pom中的project.version属性,但生成的工件仍然在我的.m2文件夹中的版本为{project.version}而不是实际版本

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

1 个答案:

答案 0 :(得分:5)

你父母的pom应该是:

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

你的孩子应该像:

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

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

这将有助于顺利维护父母和孩子之间的版本控制 下次要更改版本时,只需在指向父pom目录时使用以下命令。

mvn versions:set -DnewVersion=2.0-SNAPSHOT