2013-05-08 42 views
2

Maven的发布插件的过程如下:Git和Maven和发布和合并

  1. 变化在POM文件的版本。
  2. 提交
  3. 做标记,
  4. 变化在POM文件的版本再一次。
  5. 提交

(然后它检查出的标签,并构建释放)。

因此,发生这种情况的分支的任何合并都会引发新的,也许是不需要的版本#。现在,当然,挑选存在,但手动识别所有上游变化的提交列表,除了版本的变化是相当恼人的。有没有人有另一种选择? (除了总是从没有人认为是'上游'的分支发布以外)?

+0

我很困惑,你什么时候想要这样做?您需要有3个存储库状态:1)在开始发布之前,X.Y-SNAPSHOT; 2)释放条件下,X.Y; 3)准备再次开始开发,X.Y + 1-SNAPSHOT。我想你想要#2只存在于一个分支,然后#3可能不会推出,直到下一个“真正”的变化?你可以随时用互动式底座压扁它,我猜... – Coderer 2013-10-24 16:15:25

回答

0

不幸的是,当您使用GIT时,这是不可能的,因为标签只是指向特定提交的指针。所以如果你想在你的标签POM中有正确的版本号,你必须先修改并提交它们。 在maven-release-plugin中有一个名为suppressCommitBeforeTag的选项,它避免了修改POM的提交。但是,这只适用于像Subversion这样的SCM。如果您在GIT环境中启用此选项,则标记的POM将包含您试图发布的SNAPSHOT版本。

因此,如果您不希望在主分支上进行中间POM修改,则从独立分支发布是唯一选项。

1

您可以使用localCheckoutpushChanges释放插件选项:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-release-plugin</artifactId> 
    <configuration> 
     <localCheckout>true</localCheckout> 
     <pushChanges>false</pushChanges> 
    </configuration> 
</plugin> 

这样你就全释放本地和做到底最后的手动推。