2012-05-10 72 views
3

請考慮以下情形:我正在開發一個項目,使用maven作爲構建工具,svn或其他一些版本控制工具。從標籤發佈候選版本或分支發佈Maven

在某些時候,我決定,這是「可能」準備釋放和我設置svn標籤將其標記爲release candidate

+ Trunk (0.0.1-SNAPSHOT) 
| 
+----------------------------+ Branch "release-candidate" (0.0.1-SNAPSHOT) 
|       | (goes to QA for testing) 
+ Trunk (0.0.2-SNAPSHOT)  | 
| (development continues) + Tag "release-0.0.1" (0.0.1) 
....       (deploy this revision) 

在這一點上我需要更新pom.xml與新的開發版本。 release-candidate保留快照版本,直到QA完成測試並聲明發布準備就緒。只有這樣才能在標籤/分支上執行實際版本+部署。

當正在測試釋放候選者時,開發可以繼續進行。

使用maven構建可以實現這個兩步發佈場景嗎? release插件是否足夠用於此目的,還是我需要其他人?

回答

3

Maven發佈插件是發佈Maven項目的事實上的標準,它迫使一些具體的工作流程。正如我所看到的,你有不同的假設,但如果你想在這裏適應Maven的大會,Maven Release Plugin將在這裏完成所有工作。

首先,release:branch的目標可以幫助您創建一些版本行分支,同時碰撞trunk版本以準備進行新的開發。不過,在我看來,在下一個版本中分享這個分支名稱(這裏是release-candidate)並不是一個好主意。相反,一個標準的方法是在每個版本中做一個發佈分支,其中的東西在實際的最終發佈之前會被打磨一點。所以分支名稱0.0.1例如可以。順便說一下,release:branch目標將POM中的<scm />標記更新爲剛剛創建的分支,因此使用共享分支 - 再次 - 不是一個好主意。

拋光你的候選發佈版之後,您可以用非常標準release:preparerelease:perform電話從分支做一個實際的釋放,作爲Maven的平時。創建標籤,部署的東西,等

而現在,如果你真的想(因爲測試者的需要或東西)固定這個分支的名稱,你可以隨時使用svn:externals事情和更新release-candidate別名總是在當前點發布候選分支。

+0

實際上,我正在使用jenkins作業的固定版本候選分支。我喜歡用這個作爲別名的想法。謝謝。 – Yashima