如何防止在maven-release-plugin中推送SNAPSHOT版本?

时间:2017-07-26 09:37:19

标签: java maven maven-release-plugin

我有一个包含大量模块的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文件的次要版本。

我需要什么?

  • 在每个提交增量项目版本(包括所有模块)之前
  • 并将标记设置为远程git存储库。
  • 应该通过一次提交自定义消息来完成

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:1)

所描述的行为是预期的 - 插件在释放后会增加模块的版本,这是正常的。因此,主要建议是在定制之前再三考虑。

如果你正在使用Git,可以将pushChanges设置为false以避免推送。之后,您可以回滚上次提交并推送更改

git reset HEAD~ --hard
git push origin master

如果你解释为什么你认为第二次提交是多余的,那么建议会更实用。

如果您不确定更改,也可以使用dryRun切换。

<强>更新

  1. 进行更改
  2. mvn versions:set -DnewVersion=<version-to-set> -DgenerateBackupPoms=false
  3. git commit -m "your-comment"
  4. git tag <your-tag>
  5. 推送提交/标记
  6. 这些步骤可以很容易地汇总到脚本文件中,以避免猴子的工作。

    作为替代方案,您可以查看BuildNumber-maven-plugin,这也很有用。

答案 1 :(得分:0)

要更新版本,您可以使用release:update-versions然后手动提交。

documentation还会列出suppressCommitBeforeTag的{​​{1}}选项,听起来应该阻止提交。