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

How to prevent pushing SNAPSHOT version in maven-release-plugin?

我有一个包含很多模块(以及模块中的模块)的 Maven 项目。我正在使用 maven-release-plugin 来控制 pom.xml 文件中的版本。

当 运行 命令 mvn release:prepare 插件推送两个带有消息的提交时:"maven-release-plugin] prepare release 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] prepare for next development iteration
[maven-release-plugin] prepare release v0.9.0.38
(refactor) Code cleaned up
[maven-release-plugin] prepare for next development iteration
[maven-release-plugin] prepare release v0.9.0.37
(feature) Added I18N support

这看起来很丑陋,每次更改都推送三个提交是非常糟糕的解决方案,仅用于不手动增加 pom 文件的次要版本。

我需要什么?

我怎样才能做到这一点?

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

documentation 还列出了 release:preparesuppressCommitBeforeTag 选项,这听起来应该阻止提交。

描述的行为是有意的 - 插件在发布模块后增加模块的版本,这是正常的。所以主要的建议是定制前三思。

如果您正在使用 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. 推送 commit/tag

这些步骤可以很容易地汇总到脚本文件中,以避免 monkey-job。

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