我有一个多模块 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>

versions:set
from theversions-maven plugin:
mvn versions:set -DnewVersion=2.50.1-SNAPSHOT
它将调整多模块项目中的所有 pom 版本,父版本和依赖版本。
如果你犯了一个错误
mvn versions:revert
之后,或
mvn versions:commit
如果你对结果满意的话.
注意:此解决方案假设所有模块都使用聚合 pom 作为父 pom,这种情况在此答案时被认为是标准的。如果不是这样,请转到Garret Wilson's answer。
给出的答案假设有问题的项目除了模块聚合之外还使用项目继承。
https://maven.apache.org/guides/introduction/introduction-to-the-pom.html#Project_Inheritance_vs_Project_Aggregation一些项目可能是模块的聚合,但在聚合器 POM 和聚合模块之间没有父子关系。(可能根本没有父子关系,或者子模块可能完全使用单独的 POM 作为“父”。)在这些情况下,给定的答案将不起作用。
经过大量的阅读和实验,发现有一种方法可以使用Versions Maven Plugin不仅更新聚合器 POM,还更新所有聚合模块;它是processAllModules
选项。
mvn versions:set -DnewVersion=2.50.1-SNAPSHOT -DprocessAllModules
版本 Maven 插件不仅会更新所有包含的模块的版本,还将更新模块间的依赖关系!这是一个巨大的胜利,将节省大量时间并防止各种问题。
当然,不要忘记提交所有模块中的更改,您也可以使用相同的开关:
mvn versions:commit -DprocessAllModules
您可以决定完全放弃备份 POMS,并在一个命令中执行所有操作:
mvn versions:set -DnewVersion=2.50.1-SNAPSHOT -DprocessAllModules -DgenerateBackupPoms=false
如果你想完全自动化的过程(即你想增加版本号,而不必知道当前的版本号是什么),你可以这样做:
mvn build-helper:p-version versions:set -DnewVersion=\${pdVersion.majorVersion}.\${pdVersion.minorVersion}.\${pdVersion.nextIncrementalVersion} versions:commit
您可能需要查看 Maven 发布插件的release:update-versions目标。它将更新父级的版本以及其下的所有模块。
更新:请注意,上面是发布插件,如果您不发布,则可能要使用versions:set
mvn versions:set -DnewVersion=1.2.3-SNAPSHOT
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(68条)