更新多模块 Maven 项目中模块的版本号

新手上路,请多包涵

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

原文由 sandeepkunkunuru 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 666
2 个回答

使用 versions-maven 插件 中的 versions:set

 mvn versions:set -DnewVersion=2.50.1-SNAPSHOT

它将调整多模块项目中的所有 pom 版本、父版本和依赖版本。

如果你犯了错误,做

mvn versions:revert

之后,或

mvn versions:commit

如果您对结果满意。


注意:此解决方案假定所有模块也都使用聚合 pom 作为父 pom,这是在回答此问题时被认为是标准的场景。如果不是这种情况,请寻求 Garret Wilson 的回答

原文由 Sean Patrick Floyd 发布,翻译遵循 CC BY-SA 3.0 许可协议

给定的答案假定所讨论的项目除了模块聚合之外还使用项目继承。事实上,这些是不同的概念:

https://maven.apache.org/guides/introduction/introduction-to-the-pom.html#Project_Inheritance_vs_Project_Aggregation

有些项目可能是模块的聚合,但聚合器 POM 与聚合模块之间没有父子关系。 (可能根本没有父子关系,或者子模块可能使用单独的 POM 作为“父”。)在这些情况下,给定的答案将不起作用。

经过大量阅读和实验,事实证明有一种方法可以使用 Versions Maven 插件 来更新聚合器 POM 以及所有聚合模块;它是 processAllModules 选项。必须在聚合器项目的目录中执行以下命令:

 mvn versions:set -DnewVersion=2.50.1-SNAPSHOT -DprocessAllModules

Versions Maven 插件不仅会更新所有包含模块的版本,还会更新模块间的依赖关系!!!!这是一个巨大的胜利,将节省大量时间并防止各种问题。

当然不要忘记提交所有模块中的更改,您也可以使用相同的开关来完成:

 mvn versions:commit -DprocessAllModules

您可能决定完全放弃备份 POMS,并在一个命令中完成所有操作:

 mvn versions:set -DnewVersion=2.50.1-SNAPSHOT -DprocessAllModules -DgenerateBackupPoms=false

原文由 Garret Wilson 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题