考慮下面的場景:服務器
一個Git repository中有6個Java項目A,B,C,D,E,F.架構
A是最底層模塊。B依賴A, C,D,E,F又同時依賴A和B。 這時候項目能夠分紅三層關係。maven
需求:ui
1.Jenkins只編譯文件有改動的項目xml
默認狀況系,只要一個Git repository中有代碼改動,6個項目就所有會被編譯,這顯然是很是浪費資源的.資源
安裝Pathignore plugin後,在每一個Jenkins的項目中以下圖設置:虛擬機
** 表明sdk/common目錄下的全部子目錄的文件產品
2.手動指定編譯順序it
因爲咱們採用的是maven項目,Jenkins能夠根據pom.xml知道項目間的依賴關係,所以無需設置就能夠自動一層層編譯。io
可是Jenkins會並行編譯不一樣的項目,爲了節省服務器的資源,能夠經過手動設置來控制。
能夠在Build other projects裏面 選擇下一步要編譯的項目。
3.還能夠指定Advanced Project Options裏面的兩個選項:
Block build when upstream project is building
Block build when downstream project is building
注意,2和3只是控制了編譯順序,可是1仍然會起到做用。若是A的代碼提交出發了自動編譯,而後第2步指定了以後要編譯B, 而規則1檢查B是否有代碼變更,若是B代碼沒有改動,則編譯終止。 這是很是合理的,節省了不少資源。
注意,僅僅適用於Java等基於虛擬機的語言,若是是C++,最好項目所有從新編譯,除非你使用的是相似COM的技術搭建產品架構,而且interface沒有改變。