配置文件中指定的子模块中父模块的版本未由 Maven-release-plugin 更新

Version of parent module in child modules specified in profiles not getting updated by Maven-release-plugin

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

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

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

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

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

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

简单的技巧是不要通过配置文件排除模块,而应该在模块内部创建配置文件。这将防止您遇到此类问题。