Maven的发布插件的过程如下:Git和Maven和发布和合并
- 变化在POM文件的版本。
- 提交
- 做标记,
- 变化在POM文件的版本再一次。
- 提交
(然后它检查出的标签,并构建释放)。
因此,发生这种情况的分支的任何合并都会引发新的,也许是不需要的版本#。现在,当然,挑选存在,但手动识别所有上游变化的提交列表,除了版本的变化是相当恼人的。有没有人有另一种选择? (除了总是从没有人认为是'上游'的分支发布以外)?
Maven的发布插件的过程如下:Git和Maven和发布和合并
(然后它检查出的标签,并构建释放)。
因此,发生这种情况的分支的任何合并都会引发新的,也许是不需要的版本#。现在,当然,挑选存在,但手动识别所有上游变化的提交列表,除了版本的变化是相当恼人的。有没有人有另一种选择? (除了总是从没有人认为是'上游'的分支发布以外)?
不幸的是,当您使用GIT时,这是不可能的,因为标签只是指向特定提交的指针。所以如果你想在你的标签POM中有正确的版本号,你必须先修改并提交它们。 在maven-release-plugin中有一个名为suppressCommitBeforeTag
的选项,它避免了修改POM的提交。但是,这只适用于像Subversion这样的SCM。如果您在GIT环境中启用此选项,则标记的POM将包含您试图发布的SNAPSHOT版本。
因此,如果您不希望在主分支上进行中间POM修改,则从独立分支发布是唯一选项。
您可以使用localCheckout和pushChanges释放插件选项:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<configuration>
<localCheckout>true</localCheckout>
<pushChanges>false</pushChanges>
</configuration>
</plugin>
这样你就全释放本地和做到底最后的手动推。
我很困惑,你什么时候想要这样做?您需要有3个存储库状态:1)在开始发布之前,X.Y-SNAPSHOT; 2)释放条件下,X.Y; 3)准备再次开始开发,X.Y + 1-SNAPSHOT。我想你想要#2只存在于一个分支,然后#3可能不会推出,直到下一个“真正”的变化?你可以随时用互动式底座压扁它,我猜... – Coderer 2013-10-24 16:15:25