Maven强制构建项目的顺序

时间:2014-03-25 12:46:06

标签: java maven

我有一个多模块项目,如下所示

    • Child1
    • CHILD2
    • Child3
    • 集成

集成项目(pax-exam测试)引用了Child1和Child2,因此recator顺序为:

  • Child1
  • CHILD2
  • 集成
  • Child3

但是需要在运行时使用Child3(osgi-bundle)并且因为还没有安装Child3而失败。

如果我在父pom的我的部分中最后指定了Integration项目,那么一切正常,但是一旦添加了新项目,它将被添加到该部分的最后,并且将再次失败

无论如何都要强制最后建造/安装一个项目,即。在此确定的覆盖反应堆订单http://maven.apache.org/guides/mini/guide-multiple-modules.html

我已尝试过failafe插件,但似乎只在单元测试INSIDE当前项目而不是整个堆栈后运行集成测试。

由于

更新:

每次添加新的子项目时,我都不想添加依赖项到Integration项目,只是为了让Integration项目最后安装。然后,更容易记住在父pom模块部分的列表中最后移动Integration模块。

已经使用从pax-exam加载的features.xml文件处理了依赖项。

2 个答案:

答案 0 :(得分:1)

项目之间的依赖关系应该在POM的依赖关系部分处理。

如果仅在运行时需要依赖项,而不是在编译时,则添加

<scope>runtime</scope>

到依赖声明。

http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html

答案 1 :(得分:0)

我建议将Child3添加到Integration依赖项(我建议提供范围 - 这意味着包括在编译时,但不包括在运行时)。此外,如果您不希望在Integration的传递依赖项中使用Child3,则可以添加可选标记。这是一个例子:

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