2011-12-08 67 views
2

對於任何中等複雜的軟件項目,您都可以快速結束複雜的依賴關係鏈。Maven:針對帶SNAPSHOT的版本範圍進行開發,但針對固定版本進行發佈

考慮以下依賴關係樹:

A --> B --> C 
    `--------^ 

A和B取決於C.由於每個項目的發展,固定依賴性防止持續集成。 (例如,如果C更新爲A所需的修復,則B的依賴也將需要修改...)使用semantic版本控制,我們可以保持模塊與版本範圍一致,而無需不斷調整poms。

[實際上這個圖更復雜。我們不應該把所有東西都組合到一個多模塊項目中(或者將它們組合起來),因爲這會挫敗模塊化。我們要建立模塊化軟件持續集成]

但是部署的版本應該是一成不變的。他們所依賴的版本應該是固定的,所以今天發佈的版本(+它的依賴)與明年使用的版本相同。

目標

  • 開發商對快照發布工作(採摘快照依賴在本地或從哈德森)
  • 發佈是針對最新的(兼容)由發佈依賴的版本(不包括快照)
  • 版本永遠是不可變的。

    • 是什麼在Maven來做到這一點的最好辦法:根據A = 1.0.0將始終B和​​C
    相同版本

    問題帶來了什麼?有沒有描述這個用例的鏈接/文檔?

  • maven release插件可以解析版本範圍並將它們烘焙到版本中嗎?

鑑於

  • 通過默認的Maven(3.0.3)的版本範圍拿起快照依賴。
  • 快照並釋放可被部署到單獨的存儲庫

是否有這樣做與Maven持續集成的更好的辦法?

回答

0

如果任何依賴關係是SNAPSHOT,則發佈插件將不會發布。這就是maven如何確保發佈是不可變的。創建一個小型的多模塊測試項目並在其上運行release插件。然後你會更好地理解它的行爲 - 這是我必須做的。

我使用Jenkins構建的部署到Artifactory的405多POM構建多模塊項目。

+0

並且在版本中是否鎖定版本範圍?如果A 1.0取決於B [1.0,2.0)。這個依賴範圍在版本A中是否存在? –

相關問題