2014-03-25 93 views
0

力構建順序我有一個像下面Maven項目

  • 家長
    • Child1
    • CHILD2
    • Child3
    • 集成
一個多模塊項目

集成項目(PAX-考試測試)具有Child1和CHILD2引用,從而recator順序將是:

  • Child1
  • CHILD2
  • 集成
  • Child3

但是需要在運行時擁有Child3(osgi-bundle)並且因爲Child3尚未安裝而失敗。

如果我在父節點的最後一節指定了集成項目,那麼所有工作都會正常工作,但是一旦添加了新項目,它將被添加到節中的最後一個,並且會再次失敗。

有沒有辦法強制一個項目最後建立/安裝,即。覆蓋反應堆的順序在這裏確定http://maven.apache.org/guides/mini/guide-multiple-modules.html

我試過故障安全插件,但似乎只在單元測試INSIDE當前項目,而不是整個堆棧後運行集成測試。

感謝

UPDATE:

我不想依賴每一個新的子項目只是爲了獲得一體化工程安裝最後的緣故補時添加到集成項目。然後,記住將集成模塊最後移到父節點模塊部分的列表中更容易。

依賴關係已經由從pax-exam加載的features.xml文件處理。

+1

你可以嘗試在你的Integration項目中用「提供的」作用域添加對Child3的依賴關係 - 可能會觸發正確的構建順序。 –

+0

是的,但是,我可以改爲在父pom的模塊部分中移動集成測試。每次添加新項目時,我都不想改變項目。 – Marcus

+3

嗯。那麼,如果項目之間存在依賴關係,則應該在POM文件中說明。即使每次添加項目都需要工作。 –

回答

0

我建議增加Child3到整合的依賴(我建議提供範圍 - 這意味着包括在編譯時間,但在運行時不包括)。另外,如果您不想在Integration的傳遞依賴項中使用Child3,則可以添加可選標記。這裏有一個例子:

<dependencies> 
    <dependency> 
     <groupId>someGroupId</groupId> 
     <artifactId>Child3</artifactId> 
     <version>someVersion</version> 
     <scope>provided</scope> 
     <optional>true</optional>    
    </dependency> 
</dependencies> 
+1

提供的是錯誤的。顯然,沒有編譯時依賴,或者項目甚至不會編譯。運行時是正確的,依賴只在執行期間需要(這意味着在這種情況下的集成測試)。在這種情況下,您也可以選擇「測試」。 – blackbuild

+0

@blackbuild是的,沒錯。但我相信這兩種解決方案都可以工作,因爲問題在於反應堆的順序。我對嗎?不過我承認 - 你的描述更具描述性。 – altanis

+0

是的,兩者都可以。但是,你的pom會「謊報」它的依賴關係。我總是建議寫poms宣佈打算第一個和第二個效果。 – blackbuild