2013-05-08 72 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> 

這樣你就全釋放本地和做到底最後的手動推。