配置文件中指定的子模块中的父模块版本未通过Maven-release-plugin

时间:2019-05-06 12:29:36

标签: maven 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>

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

MVN都不发布:update-versions 和mvn release:准备按预期更新版本。

2 个答案:

答案 0 :(得分:1)

我建议从多模块构建中删除“慢速模块”。而是在构建服务器(Jenkins,Bamboo等)中创建管道,该管道首先构建您的多模块项目,然后(对于发行版)构建“慢速模块”。

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

答案 1 :(得分:1)

一个简单的技巧是不要通过配置文件排除模块,而应该在模块内部进行配置。这样可以避免出现此类问题。