在 Maven 项目中,如何自动更新所有子模块以及父模块的版本?
我有一个多模块项目。
parent POM (1.0-SNAPSHOT) |-- module1 (1.0-SNAPSHOT) |-- module2 (1.0-SNAPSHOT) `-- module3 (1.0-SNAPSHOT)
当我执行 mvn release:prepare 时,它会验证父 POM 是否具有 SNAPSHOT 版本,并且所有依赖模块都没有 SNAPSHOT 版本。如何自动将所有子模块从 SNAPSHOT 更新到下一个发布版本?
我想自动增加所有模块的版本。
I have a multi-module project.
parent POM (1.0-SNAPSHOT) |-- module1 (1.0-SNAPSHOT) |-- module2 (1.0-SNAPSHOT) `-- module3 (1.0-SNAPSHOT)
When I execute mvn release:prepare it verify that parent POM has a SNAPSHOT version and all dependent modules don't have a SNAPSHOT version. How automatically update all child modules from SNAPSHOT to the next release version?
I would like automatically increment version for all modules.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
设置 poms 版本(包括多模块项目)的灵活方法是 Versions Maven Plugin。
它将调整多模块项目中的所有 pom 版本、父版本和子版本。
那么
或者
A flexible way to set poms versions, multi-modules projects included, is Versions Maven Plugin.
It will adjust all pom versions, parent versions and children versions in a multi-module project.
then
or
发布插件可以处理这个问题。您是否检查过更新 POM 版本?但...
我什么也没得到。 将 POM 中的版本从 x-SNAPSHOT 更改为新版本以及将 POM 中的版本更改为新值 y-SNAPSHOT 应通过
release 来完成:prepare
如准备发布<中所述/a>.使用这个目标时出了什么问题?更新:
autoVersionSubmodules
参数可能就是您正在寻找的。从准备发布示例:父 pom.xml 的片段
The release plugin can handle that. Did you check Updating POM Versions? But...
I don't get something. Changing the version in the POMs from x-SNAPSHOT to a new version and bumping the version in the POMs to a new value y-SNAPSHOT should be done by
release:prepare
as explained in Prepare a Release. What is going wrong when using this goal?Update: The
autoVersionSubmodules
parameter might be what you're looking for. From the Prepare a Release example:Snippet of parent pom.xml
确保所有子项目版本与其父项目版本相同。
创建另一个 pom.xml 将这些项目组合在一起。
<前><代码><模块>;
<模块>../xyz-parent
<模块>../module-1
<模块>../module-2
然后更新父项目的版本,然后通过以下命令构建它。
然后将这些子项目中定义的父版本更新为 latset 版本
然后将它们一起构建。
<前><代码>@echo 开启
cd .\xyz-父级
调用 mvn 版本:set -DnewVersion=1.0.1004-SNAPSHOT -o
调用mvn版本:commit -o
调用 mvn clean install -o
:::http://www.mojohaus.org/versions-maven-plugin/examples/update-child-modules.html
cd ..\xyz-buildaggregate-ide
调用 mvn -N versions:update-child-modules -o
调用 mvn clean install -o
Make sure all sub-projects versions are the same to their parent's version.
Create another pom.xml to group those project together.
Then update the parent project's version and then build it by below command.
Then update the parent's version which is defined in those sub-project to the latset one
Then build them together.
有一个可能更好的选择 https://issues.apache.org/jira/browse/MNG-624?focusedCommentId=14415968&page=com.atlassian.jira.plugin.system.issuetabpanels: comment-tabpanel#comment-14415968
这是一种解决方法,用于解决以下问题:如果没有列出显式版本,则无法引用子模块 poms 中的顶级 pom。 (这就是错误 MNG-624 的含义)
它解释了如何为版本提供单一位置(在顶级profiles.xml 文件中),并在所有 pom.xml 文件中简单地拥有属性引用(即 ${currentVersion})。
但是,在此方案版本中:prepare 可能不会为您更新profiles.xml。
There is a potentially better option over at https://issues.apache.org/jira/browse/MNG-624?focusedCommentId=14415968&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14415968
That is a workaround for the fact that you can't refer to the top level pom in the sub-module poms without having an explicit version listed. (which is what bug MNG-624 is about)
It explains how you can have a single location for the version (in a top-level profiles.xml file), and simply have a property references in all the pom.xml files (i.e. ${currentVersion})
However, in this scheme release:prepare probably won't update profiles.xml for you.