1

我有一個mavenmulti-module項目中有6個以上的子模塊。如果一個3人隊並行工作,每個人都以2 sub-modules作爲他們的任務,那麼如何增加版本號。如何版本編號項目?

而我在發佈週期中遵循Major.minor.patch-meta版本編號格式。

Project A 
    -- sub-module-assembler 
     pom.xml 
    -- sub-module-1 
     -sub-sub-module-1 pom.xml 
     -sub-sub-module-2 pom.xml 
     pom.xml 
    -- sub-module-2 
     -sub-sub-module-1 pom.xml 
     -sub-sub-module-2 pom.xml 
     pom.xml 
    -- sub-module-3 
     -sub-sub-module-1 pom.xml 
     -sub-sub-module-2 pom.xml 
     pom.xml 
    -- sub-module-4 
     -sub-sub-module-1 pom.xml 
     -sub-sub-module-2 pom.xml 
     pom.xml 
    -- sub-module-5 
     -sub-sub-module-1 pom.xml 
     -sub-sub-module-2 pom.xml 
     pom.xml 
    -- sub-module-6 
     -sub-sub-module-1 pom.xml 
     -sub-sub-module-2 pom.xml 
     pom.xml 
--pom.xml 

遞增和parallel programming遞減版本號,而在此通知的主要事情的確切的用法是一些sub-modules在該項目完全取決於其他一些sub-module,如果是這樣的話,那麼如何版本號恰恰當發展按照一定的順序平行時呢?

我不清楚下面的,但版本編號

  1. 如果我需要做的meta release的bug修復如α,β,γ等的情況下,這個正確的方式,

  2. 如果我需要做的feature[sub-sub-module-x]完成的情況下,patch releasesub-module,而我使用second level+sub-modules例如0.1.1-α,0.1.2-α等,

  3. 在完成sub-module(例如0.2.0-alpha,0.2.0-RC等)的情況下,我是否需要執行minor release
  4. 所以整合後的所有RC的0.2.0-RC + 0.3.0-RC + 0.4.0-RC等我應該需要做major release爲1.0.0-RTM等,

所以瞭解上面的流程是一點點cofusing ..

有沒有什麼辦法來自動化項目中的build numbering,以保持明確build release numbers。請提供解決方案。

謝謝

回答

1

我懷疑對於所有版本控制策略都沒有答案。但讓我嘗試一些提示,以幫助您選擇適合您情況的策略。

該項目看起來相當大。我要做的第一批是責任。是否有限於某個開發團隊的模塊?還是整個事情保持「一體化」?希望你能把它分開一點。 一旦你瞭解了模塊的職責,你需要定義一些生命週期。一個發行版(或修補程序,修補程序)創建和由誰發佈的頻率和頻率?如果每個人都遵循相同的節奏,您可以共享一個版本並釋放整棵樹。但通常在大型項目中情況並非如此。如果很多人共享一個版本,它還會在開發過程中引入副作用。

如果您不打算一次釋放完整的樹,則可能會因此更多地拆分它。你仍然可以使用一個普通的父pom.xml(但是一個發佈版本)。

我會爲父pom.xml中的模塊定義一個版本並繼承它。所以在子模塊中沒有單獨的版本。此外,每個依賴其他模塊的團隊都不應該使用SNAPSHOT依賴關係來處理其他團隊的工作。他們只能使用發佈的版本(無論是BETA還是RC1)。保持構建可重現是非常重要的。例如:「沒有快照依賴於你不負責的工件(你控制什麼變化和何時)」

至於版本控制本身:懷疑更簡單的選項可能會更好。所有的元信息可能只會混淆實際狀態?

也可能有一些用處是繪製一個部署管道:哪個模塊首先出現,哪些依賴於它等等。一個模塊中的更改量定義了版本如何變化(主要,次要,補丁更改)。如果這些更改不會跨模塊傳播(API保持穩定,這是您的目標),則下一個模塊可能只會執行修補程序版本。

如果您還沒有發佈任何東西,未雨綢繆。每次迭代通常都是API更改(因此它實際上將是主要版本)。這將導致版本18.0.0被釋放(經過18次迭代)。所以通常使用次要版本來表示迭代,並且補丁版本會指出一些修復以穩定該版本。所以主要版本的選擇來自於營銷方面而不是技術方面。

這也取決於你所建立的軟件類型(產品,內部解決方案,爲你的景觀提供一些附加服務)。產品的版本更加清晰,他們通常使用META部分來指示迭代以及major.minor.patch數字以指示正在發生的事情。這個策略(「指出期望的變化」)可能對你正在做的事情有幫助?

所以希望這沒有提出比你在開始時更多的問題:)