2013-12-10 36 views
1

我有一個web maven項目'A',取決於maven項目'B'。我正在使用Jenkins進行部署。在項目「A」部署過程之前,有一個預生成參數用於生成項目「B」,然後繼續編譯。我需要指出項目'A'將使用新編譯的B.jar,而不是在其pom.xml中定義的。如何用特定的庫建立一個maven項目?

我看到這個鏈接How do I trigger another job from hudson as a pre-build step?,但我不知道如何指示新jar。

我該怎麼做?

+1

您是否在使用SNAPSHOT版本控制?如果我正確理解你的問題,我很肯定SNAPSHOT版本化正是你正在尋找的。 – rmlan

+0

好吧,也許就是這樣!但是隨着我繼續自動將jar項目B上傳到Maven倉庫,這樣「項目A」就可以使用它? – dellasavia

+0

我不確定您的確切需求或設置,但從技術上講,如果A和B在相同的Jenkins服務器上構建,他們將使用相同的本地Maven回購。因此,只要你在B的版本上運行'install'目標,就可以使用@ – rmlan

回答

1

簡單但不能保證的方法是強制依賴更新(-U)。

  1. 項目的預構建導致B來構建
  2. 乙部署B.jar到存儲庫
  3. 一個Maven的構建開始,檢查依賴(-U),找到最新的B的僅僅是一個你內置

一個變體是使用A和B作業之間共享的特定本地存儲庫(在Jenkins中的高級maven配置中),但是如果您希望作業在不同的從服務器上執行,可能會很煩人。

我建議的更復雜但更安全的方法是創建一個反應器項目(即一個以A和B爲模塊的maven項目)並構建它。如果您處理不同的存儲庫,設置起來可能會非常棘手,但一旦完成後,A和B將在同一個反應堆中執行,那麼您將保證A將使用剛剛構建的B.

+0

正確的解釋,但可能錯過了第一條評論中提到的關鍵詞「快照」,這使我找到了最佳解決方案。我搜索了這個詞,並找到了一些幫助我的教程。無論如何都需要解釋。像這樣:http://www.tutorialspoint.com/maven/maven_snapshots.htm – dellasavia

+0

我假設有快照。快照的問題在於,您將獲取最新部署的快照或最近緩存的快照(如果沒有-U - 在鏈接中註明'每天')。如果您有多個系統部署工件(可以考慮使用從屬工具構建大型集羣),那麼可能是也可能不是您剛創建的那個。 – ptyx

相關問題