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

ser*_*rah 3 maven-3 maven

我正在使用Maven 3.x,我的父pom和child 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>
Run Code Online (Sandbox Code Playgroud)

我有一个孩子pom如下

<parent>
 <groupId>com.mygoogle.sample</groupId>
 <version>${project.version}</version>
 <artifactId>workorder</artifactId>     
</parent>
<artifactId>workorder-client</artifactId>
<packaging>jar</packaging>
Run Code Online (Sandbox Code Playgroud)

当我使用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也应该继承相同的版本.

RIT*_*AVI 6

你父母的pom应该是这样的:

<groupId>com.mygoogle.sample</groupId>
<artifactId>workorder</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
Run Code Online (Sandbox Code Playgroud)

你的孩子应该是这样的:

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

<artifactId>workorder-client</artifactId>
<packaging>jar</packaging>
Run Code Online (Sandbox Code Playgroud)

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

mvn versions:set -DnewVersion=2.0-SNAPSHOT