如何防止在 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 文件的次要版本。
我需要什么?
- 在每次提交增量项目版本之前(包括所有模块)
- 并将标签设置到远程 git 存储库。
- 并且应该通过使用自定义消息的一次提交来完成
我怎样才能做到这一点?
要仅更新版本,您可以使用 release:update-versions
然后手动提交。
documentation 还列出了 release:prepare
的 suppressCommitBeforeTag
选项,这听起来应该阻止提交。
描述的行为是有意的 - 插件在发布模块后增加模块的版本,这是正常的。所以主要的建议是定制前三思。
如果您正在使用 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>
- 推送 commit/tag
这些步骤可以很容易地汇总到脚本文件中,以避免 monkey-job。
作为替代方案,您可以查看 BuildNumber-maven-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 文件的次要版本。
我需要什么?
- 在每次提交增量项目版本之前(包括所有模块)
- 并将标签设置到远程 git 存储库。
- 并且应该通过使用自定义消息的一次提交来完成
我怎样才能做到这一点?
要仅更新版本,您可以使用 release:update-versions
然后手动提交。
documentation 还列出了 release:prepare
的 suppressCommitBeforeTag
选项,这听起来应该阻止提交。
描述的行为是有意的 - 插件在发布模块后增加模块的版本,这是正常的。所以主要的建议是定制前三思。
如果您正在使用 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>
- 推送 commit/tag
这些步骤可以很容易地汇总到脚本文件中,以避免 monkey-job。
作为替代方案,您可以查看 BuildNumber-maven-plugin,这也很有用。