我對多模塊項目的分支方法有些懷疑。 我有我的CVS的maven項目,我打算創建一個分支。 問題是,我對我給出的建議解決方案不太滿意。我支持分支整個項目,而不是我正在修改的模塊。如何在CVS中分支多個模塊maven項目?
那好嗎?
我的意思是,這個問題模塊可能是一個項目本身,但我們把它作爲一個模塊,以便在一個maven項目中將所有客戶端的項目作爲模塊包裝起來。
謝謝!
我對多模塊項目的分支方法有些懷疑。 我有我的CVS的maven項目,我打算創建一個分支。 問題是,我對我給出的建議解決方案不太滿意。我支持分支整個項目,而不是我正在修改的模塊。如何在CVS中分支多個模塊maven項目?
那好嗎?
我的意思是,這個問題模塊可能是一個項目本身,但我們把它作爲一個模塊,以便在一個maven項目中將所有客戶端的項目作爲模塊包裝起來。
謝謝!
您應該分支整個項目,因爲它更簡單,不會產生任何問題。此外,如果你只是分支一個多模塊項目的單個模塊,你會遇到問題來解決這個問題,並且會導致模塊之間的同步失效。
我一直在想同樣的事情。我甚至試圖在Maven的用戶列表上提出這個問題,但是我沒有得到答案。這是我認爲是最好的答案。
首先,Maven構建世界的一些現實。
1)多模塊構建是讓一組東西一起構建的好方法。但是我認爲它們與「A應該在B之前構建」這個簡單用例所要求的模塊耦合更緊密 - 這種鬆散耦合由Jenkins觸發器更好地處理。
2)多模塊構建需要被構建爲一個目錄樹,雖然這不一定總是你想要的。它在源代碼控制結構,分支和構建邏輯之間創建一個耦合。
3)分支是與所有第1點和第2點以及軟件交付/發佈模型相關的複雜事情。它也可能是你的開發者的噩夢。 。 。
我suggestsions(我自己,以及你):
1)不要創建您的構建,源控制結構,你的分支,或任何東西。 。 。與我們的一套要求在手。像軟件工程的其他方面一樣,需求是必須的。它們似乎比編碼更容易被跳過。
2)不要分支你沒有做實際的並行開發。如果您的構建結構迫使您分支代碼實際上沒有看到併發開發,那麼就會出現問題。
3)獲得您的要求後,創建一些可能的構建,scm,發佈解決方案,並在紙面上瀏覽它們,以瞭解分支和構建如何發揮作用。
這可能是一個評論,但我其實不認爲有一個簡單的「答案」;所以這將是足夠的。
我自己想了一會兒。我同意@chad的觀點:沒有直接的答案,這是非常令人驚訝的,因爲數百人必須面對這個問題。
我的經驗是在行家+ CVS +詹金斯的背景下,所以記住的一些優點我會提到是真正的詹金斯方面的優勢
我的觀點是,你應該只在分支子模塊實際上有不同的代碼(基本上是chad的#2)。除此之外,我發現如果您調整規範的maven多模塊結構,整個分支和構建會更好;具體而言,將聚合物POM與母體POM分離,其通常在單個POM中一起。這將會給你帶來什麼,現在在你的構建系統中,你可以建立每個子模塊+父POM,完全分離並按照你的意願分支它們。如果你不分開它們,像詹金斯這樣的系統會創建它們自己的子模塊,這些子模塊是不可分支的。
所以基本上我的結構看起來像這樣
root
--pom.xml (aggregator)
--parent
----pom.xml
--subModA
----pom.xml
--subModB
----pom.xml
爲了完整起見,我與分支的整個結構最大的問題是,你有幾個分公司是相同的部分。這最終會在你的依賴關係中造成複雜性,在這種情況下,subModA的v1.1需要subModB的v1.1版本,並且在實際上1.0版本時會失敗,因爲沒有任何更改。另一方面,如果你在不改變的模塊中增加版本(在我的例子中是subModB),你將會部署完全相同代碼的多個快照。這種無用的部署可能會觸發不必要的操作(例如,考慮測試,質量保證)
你能舉例說明這樣一個項目的文件夾結構嗎? – khmarbaise