首页 > 解决方案 > Maven-release-plugin 未更新配置文件中指定的子模块中的父模块版本

问题描述

我有一个多模块项目,其中一个模块构建速度很慢,仅在发布时使用(仅发布)。在聚合 pom 中,除了仅发布模块之外,我还指定了所有模块。仅发布模块在一个单独的配置文件中指定,我使用 maven-release-plugin 激活它,它构建它并很好地发布它。

问题是当我运行 release:prepare 时,仅发布模块中的父模块的版本没有得到更新,这意味着当所有其他模块构建(在准备和执行中)正确设置父工件版本时,发布-only 模块在版本中仍然有 -SNAPSHOT。

我发现这似乎是相关的问题。但没有解决办法。 https://issues.apache.org/jira/browse/MRELEASE-843

来自聚合 pom 的一些简单代码,解释了结构。

<profile>
<id>build-rpm</id>
 <modules>
   <module>release-only</module>
 </modules>
</profile>

<plugin>
<artifactId>maven-release-plugin</artifactId>
 <configuration>
   <releaseProfiles>build-rpm</releaseProfiles>
 </configuration>
</plugin>

<modules>
  <module>module1</module>
  <module>module2</module>
</modules>

运行 mvn release:prepare 时,我希望更新所有模块中的版本。(就像正常的 mvn 版本一样:set -DnewVersion=xxx 按预期工作)

mvn release:update-versions 和 mvn release:prepare 都没有按预期更新版本。

标签: mavenmaven-release-plugin

解决方案


我建议从多模块构建中删除“慢模块”。相反,在您的构建服务器(Jenkins、Bamboo 等)中创建一个管道,该管道首先构建您的多模块项目,然后(在发布的情况下)构建“慢模块”。

这样,您就避免了配置文件中的模块以及关闭和打开模块的所有麻烦。


推荐阅读