我有一个多模块的maven项目。我们打算把所有这些模块放在一起。但到目前为止,我在每个模块pom.xml中完成了如下所示的硬编码版本

<parent>
    <artifactId>xyz-application</artifactId>
    <groupId>com.xyz</groupId>
    <version>2.50.0.g</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.xyz</groupId>
<artifactId>xyz-Library</artifactId>
<version>2.50.0.g</version>

主父模块具有下面的配置

<modelVersion>4.0.0</modelVersion>
<groupId>com.xyz</groupId>
<artifactId>xyz-application</artifactId>
<version>2.50.0.g</version>
<packaging>pom</packaging>

当前回答

提示: 例如,如果您的多模块maven项目在主POM文件中使用项目版本作为属性

<properties>
        <revision>1.0.0</revision> <!-- project version/revision -->
        ...
</properties>

在这种情况下,你可以使用set-property而不是set来提升你的项目版本:

例子:

mvn versions:set-property -Dproperty=revision -DnewVersion="2.0.0"  

mvn versions:commit

其他回答

如果你想完全自动化这个过程(即你想增加版本号,而不需要知道当前版本号是什么),你可以这样做:

mvn build-helper:parse-version versions:set -DnewVersion=\${parsedVersion.majorVersion}.\${parsedVersion.minorVersion}.\${parsedVersion.nextIncrementalVersion} versions:commit

最好的方法是,既然你打算把你的模块捆绑在一起,你可以在最外层的pom.xml(父模块)中直接在<project>标签下指定<dependencyManagement>标签。它控制版本和组名。在您的单独模块中,您只需要在pom.xml中指定<artifactId>标记。它将从父文件中获取版本。

你可能想看看Maven发布插件的release:update-versions目标。它将更新父版本以及它下面的所有模块。


更新:请注意以上是发布插件。如果你没有发布,你可能想要使用versions:set

mvn versions:set -DnewVersion=1.2.3-SNAPSHOT

更新子模块上的主pom.xml和父版本:

mvn versions:set -DnewVersion=1.3.0-SNAPSHOT -N versions:update-child-modules -DgenerateBackupPoms=false

最简单的方法是将每个pom.xml中的版本更改为任意版本。然后检查依赖管理是否使用了这个模块中使用的正确版本的模块!例如,如果你想增加一个tow模块项目的版本控制,你必须像这样做:

在公子模块中:

    <parent>
       <artifactId>A-application</artifactId>
       <groupId>com.A</groupId>
       <version>new-version</version>
    </parent>

在父模块中:

<groupId>com.A</groupId>
<artifactId>A-application</artifactId>
<version>new-version</version>