我有一个包含大量模块的maven项目(以及模块内的模块)。我正在使用 maven-release-plugin 来控制 pom.xml 文件中的版本。
当运行命令mvn release:prepare
插件正在推送两个提交消息:" [maven-release-plugin]准备发布v0.9.0.38" 和" [maven-release-plugin]准备下一次开发迭代" 。这里第二个只是快照版本。
以下是 maven-release-plugin 设置:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.5.3</version>
<configuration>
<tagNameFormat>v@{project.version}</tagNameFormat>
<autoVersionSubmodules>true</autoVersionSubmodules>
<checkModificationExcludes>
<checkModificationExclude>pom.xml</checkModificationExclude>
<checkModificationExclude>*/pom.xml</checkModificationExclude>
</checkModificationExcludes>
<branchBase>master</branchBase>
</configuration>
</plugin>
</plugins>
</build>
推送时我也将标签设置为远程git项目(你可以在<tagNameFormat>v@{project.version}</tagNameFormat>
中看到它)所以我需要明确推送提交,但我不希望它推送快照版本(例如0.9.0.38-SNAPSHOT)。
修改:
因为我在每次提交时通过运行
来增加项目的次要版本
mvn release:prepare
。
例如提交看起来如下:
[maven-release-plugin]为下一次开发迭代做准备 [maven-release-plugin]准备发布v0.9.0.38
(重构)代码清理了
[maven-release-plugin]为下一次开发迭代做准备 [maven-release-plugin]准备发布v0.9.0.37
(功能)添加了I18N支持
这看起来非常难看,并且每次更改都推送三次提交是非常糟糕的解决方案,仅用于手动增加pom文件的次要版本。
我怎样才能做到这一点?
答案 0 :(得分:1)
所描述的行为是预期的 - 插件在释放后会增加模块的版本,这是正常的。因此,主要建议是在定制之前再三考虑。
如果你正在使用Git,可以将pushChanges设置为false
以避免推送。之后,您可以回滚上次提交并推送更改
git reset HEAD~ --hard
git push origin master
如果你解释为什么你认为第二次提交是多余的,那么建议会更实用。
如果您不确定更改,也可以使用dryRun切换。
<强>更新强>
mvn versions:set -DnewVersion=<version-to-set> -DgenerateBackupPoms=false
git commit -m "your-comment"
git tag <your-tag>
这些步骤可以很容易地汇总到脚本文件中,以避免猴子的工作。
作为替代方案,您可以查看BuildNumber-maven-plugin,这也很有用。
答案 1 :(得分:0)
要更新版本,您可以使用release:update-versions
然后手动提交。
documentation还会列出suppressCommitBeforeTag
的{{1}}选项,听起来应该阻止提交。