2014-03-25 71 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