Maven 发布插件进行如下:
- 更改 pom 文件中的版本。
- 犯罪
- 做一个标签
- 再次更改 pom 文件中的版本。
- 犯罪
(然后它检查标签并构建发布)。
因此,发生这种情况的分支中的任何合并都会拉取新的,可能是不受欢迎的版本 #。现在,当然,cherry-pick 存在,但是手动识别所有上游更改的提交列表,除了版本的更改是非常烦人的。有没有人有替代方案?(除了总是从没有人视为“上游”的分支发布?)
您可以使用发布插件的localCheckout和pushChanges选项:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<configuration>
<localCheckout>true</localCheckout>
<pushChanges>false</pushChanges>
</configuration>
</plugin>
这样您就可以在本地进行整个发布,最后进行最终的手动推送。
不幸的是,当您使用 GIT 时这是不可能的,因为标签只是指向特定提交的指针。因此,如果您想在标记的 POM 中拥有正确的版本号,您必须先修改并提交它们。在 maven-release-plugin 中有一个选项suppressCommitBeforeTag
可以避免提交修改过的 POM。然而,这只适用于像 Subversion 这样的 SCM。如果您在 GIT 环境中启用此选项,您标记的 POM 将包含您尝试发布的 SNAPSHOT 版本。
因此,如果您不想在主分支上进行中间 POM 修改,则从单独的分支发布是唯一的选择。