2013-03-22 236 views
0

管理版本依賴關係的最佳方式是什麼?管理版本依賴關係

通常我會創建一個超級POM(不是父級POM),我會在超級POM中聲明所有的依賴關係。所以我的所有項目都可以將POM引用到依賴關係中。優點是我所有的依賴都是由中央POM控制的。

但是,如果我們正在開發一些年復一年地銷售給不同客戶的產品,並且依賴版本會逐年更新。我將如何跟蹤我發佈到每個客戶端的產品的依賴版本?我不想每次需要更新依賴版本時都更新我的POM。

所以我想在我的設置xml中保留依賴項的版本,因爲屬性和設置可以在每個版本中更新或版本化。

我在Maven有經驗,但不是專家。任何好的建議嗎?... 預先感謝 約瑟夫

+0

簽出版本插件。 http://mojo.codehaus.org/versions-maven-plugin/ – 2013-03-23 10:56:56

回答

2
  • 把所有的版本在父POM的dependencyManagement。 (就像現在這樣做,這就是爲什麼依賴管理存在的原因)
  • 要跟蹤舊版本:在SCM中使用標籤。
  • settings.xml不在項目的一部分!它在那裏包含關於構建環境(即不是項目)的屬性和數據。
  • 不要混合不同項目的依賴關係。這似乎是一個非常糟糕的想法(這意味着如果你爲某個特定的客戶更新了一個廣泛使用的依賴項(比如hibernate):它將針對你的所有項目進行更新,因此你將不得不重新驗證你的所有項目新版本的休眠)

只是一個小問題,你在版本控制你的settings.xml和版本控制父pom之間有什麼區別?

+0

我們的產品由多個功能塊組成。並非所有客戶都可能需要所有功能塊。這就是爲什麼jar依賴版本需要外部化。對於下一個客戶端,一些功能塊和代碼庫可能根本不會改變。所以我想找到合適的平衡。回答你的問題:沒有區別 – 2013-03-23 00:34:12

+0

讓我們說我們今天將產品發佈給客戶1,明天發佈給客戶2。我必須向client1發佈補丁後的第二天。對於客戶端2來說,下一個版本將會在一年之後,幾乎沒有新的構建塊。我可能還必須發佈前面發佈的其他構建基塊,因爲我需要爲新構建塊進行版本更新。 – 2013-03-23 00:44:57

+0

我可以每次提到我的POM版本。如果代碼庫不變,我不想更新POM。我想保留每個客戶端的版本分開。 – 2013-03-23 00:50:12