2011-12-08 77 views
1

我想知道是否有人有Maven構建並行執行的經驗。我知道Jenkins中有一個選項可用於Maven構建的本地存儲庫,而且我也從2007 http://jira.codehaus.org/browse/MNG-2802中發現此問題。並行Maven執行

有沒有辦法掛鉤到Maven下載來做基本的文件系統鎖定?或者是否有可能用某種東西(什麼?)完全取代它?

謝謝。

我很驚訝,在2011年這樣的着名工具不考慮並行執行的可能性。

回答

1

在我的CI服務器上,我將每個項目配置爲擁有自己的本地存儲庫。此外,我安排定期作業來清除這些文件。爲什麼?

我的推理是我想將每個項目彼此隔離,並鼓勵從基於Nexus的Maven存儲庫定期進行「乾淨」構建。

沒有解決您的有效問題,但也許可以解釋爲什麼我不認爲它是一個問題。

+0

嗨。感謝您的回覆。我認爲分離本地存儲庫不會增加構建/項目隔離,因爲每個本地存儲庫都是相同的。 – woky

+0

項目可以從不同位置提取相關性。 POM可以改變(尤其是快照構建),從而導致不同的傳遞依賴關係集被拉下。我的經驗是,定期的「新鮮」構建是必需的,以確保您不會從穩定的構建中獲得任何意外。 –

+0

嗨。關於不同的地點。從你從哪裏取得依賴關係並不重要,因爲來自中央的foo-1.0.0應該與來自JBoss的foo-1.0.0相同,或者是錯誤的。如何改變來自不同地點的POMs和_dependencies_打破共享本地資源庫的構建隔離? – woky

0

實際上,如果您構建消耗另一個產生的工件(一個下游工程)或生成相同工件(構建不同的配置)的兩個工程,這一點至關重要。在這些情況下,您可能會考慮阻塞下游構建,直到完成第一個構建,或者流水線化配置,以便它可以獲取正在進行的構建。

雖然鎖定有助於避免修改的JAR文件導致的錯誤,但鎖定整個構建的上下文最好在CI系統中完成。

無論如何,馬克指出,有很好的理由來分離本地存儲庫,Maven可以通過共享緩存而不是緩存快照來支持這一點 - 但是現在有單獨的本地存儲庫,最好的辦法去那。

+0

嗨佈雷特。感謝您的回覆。最可能的問題是http://jira.codehaus.org/browse/MNG-4706。鎖定整個構建將導致一次只能在CI中構建一個項目(而不是選項)。爲每個構建分離本地存儲庫有什麼好理由? 〜/ .me/repository中的文件對於構建的其餘部分將是隻讀的。 – woky

+0

當我說鎖定構建時,我的意思是生成並消耗彼此的構件 - 而不是所有構建。對於單獨的本地回購,我指的是Mark在回答中給出的原因。 –