maven - 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 都没有按预期更新版本。
解决方案
我建议从多模块构建中删除“慢模块”。相反,在您的构建服务器(Jenkins、Bamboo 等)中创建一个管道,该管道首先构建您的多模块项目,然后(在发布的情况下)构建“慢模块”。
这样,您就避免了配置文件中的模块以及关闭和打开模块的所有麻烦。
推荐阅读
- javascript - 悬停图像时使用自定义光标并指向链接
- node.js - 我该如何解决这个问题 heroku web
- perl - 仅当以 Perl 中的给定字符串开头时,才将一行从一个文件写入另一个文件
- python - 按日期对 Django Rest API 端点响应进行排序
- oracle - 如何使用 cron 表达式在 oracle 中安排数据库作业?
- java - 如何让 @UseAdviceWith 在 Camel 3 中工作
- c# - 在请求对象中获取 X-Original-Host
- mysql - 如何在有条件的情况下执行 LEFT JOIN
- html - 在我的 wordpress 网站上用` 探测
- laravel - Laravel 背包 crud 用于更新和列出关系