2012-09-26 42 views
5

我有一個平坦的結構化的方式舉辦了以下項目:Maven的多模塊項目和詹金斯

parentProject 
+-pom.xml 

projectWeb <depends on libraryA and libraryB> 
+-pom.xml 

libraryA 
+-pom.xml 

libraryB 
+-pom.xml 

的parentProject內pom.xml中有其它模塊和用於繼承和dependencyManagement參考,這裏是一個片段:

<project> 
    .... 
    <modules> 
     <module>../projectWeb</module> 
     <module>../libraryA</module> 
     <module>../libraryB</module> 
    </modules> 
    <dependencyManagement> 
    ... 
    </dependencyManagement> 
    <build> 
    ... 
    </build> 
    .... 
</project> 

詹金斯我有每個項目都有一個行家的工作,而當我建立parentProject,即它工作正常。構建modules部分中引用的每個項目。 我的問題是,當我向SVN提交libraryA更改時,我期望在構建libraryA之後,重建到projectWeb即可啓動,但這並未發生。 任何人都知道我在做什麼錯?

在此先感謝。

EDIT

當我從parentProject\pom.xml除去modules部分,它可以作爲espected,但我鬆具有父POM的聚集的優勢。

回答

0

這應該在jenkins工作中配置。請參閱「LibraryA的工作」 /「配置」 /「生成觸發器」 /「生成後,其他項目都建」

+0

感謝您的回覆,但是當我將編輯後的問題放入其中時,如果我從父pom中移除模塊,則會按預期觸發構建,即,如果我構建'libraryA',則會自動構建'proyectWeb',而不進行配置你提到。 – sivainvi

1

它看起來像你問你的父POM做兩件事情:

  1. 設置依賴管理的東西
  2. 總結您的構建

它通常是更好,如果你拆了這一點,爲兩個勁歌 - #1父POM和#2的聚合POM。然後,你必須像..

[root dir] aggregate pom.xml 
+ /parent 
+ /web 
+ /libA 
+ /libB 

看到這個答案的詳細信息:https://stackoverflow.com/a/3301162/211993

你最好再配置​​詹金斯檢查出的根目錄,並運行「命令mvn全新安裝」

+2

你能否詳細說明爲什麼「如果你分裂......通常會更好」?我並不是說這不是,但我不明白爲什麼它更好。不幸的是,我沒有從你所連接的答案中理解它。謝謝! – Ittai

+1

因此,最初,它只是幫助分離問題 - 聚合器負責構建模塊的順序,父代負責依賴版本以及諸如scm連接詳細信息之類的內容。 – dan

+1

另外,我看過一些例子,人們已經將父母的父母分解爲公共部分,然後成爲其他父母的父母。比方說,你有幾個使用Hibernate的項目,你可以把這些版本化到一個hibernate父pom中,然後用它作爲「超級父母」(就像它,我只是把這個短語做了)爲跨多個項目提供一致的hibernate庫版本,這些版本不以其他方式鏈接。但要確保你真的需要這種共同的方法;你將多個項目結合在一起,這可能不合意。 – dan