12

我有一个 Maven 父项目,它有多个子/模块...我有以下 pom.xml 用于主/父;

<modules>
        <module>Main-Ear</module>
        <module>Sub-Web</module>
        <module>Sub-Ui</module>
        <module>Sub-Services</module>
        <module>Sub-SSO-Login</module>
  </modules>

但是,我发现实际的构建顺序有所不同......构建后,实际顺序看起来像;

Main
Sub-Services
Sub-SSO-Login
Sub-UI
Sub-Web
Main-Ear

在这种情况下,Maven 究竟从哪里获取构建顺序?

4

2 回答 2

12

您无法手动控制构建顺序:

来自 Maven 项目文档(使用多个模块的指南):

反应堆分选

因为多模块构建中的模块可以相互依赖,所以反应器以确保任何项目在需要之前构建的方式对所有项目进行排序非常重要。

排序项目时遵循以下关系:

  • 项目依赖于构建中的另一个模块
  • 插件声明,其中插件是构建中的另一个模块
  • 插件依赖于构建中的另一个模块
  • 构建中另一个模块的构建扩展声明元素中声明的顺序(如果没有其他规则适用)

请注意,仅使用“实例化”引用 - dependencyManagement 和 pluginManagement 元素不会导致反应堆排序顺序发生变化

于 2013-09-05T07:18:01.670 回答
5

Maven没有按照我们在 main 中定义的模块构建顺序pom.xmlMaven通过考虑模块与其他模块的依赖关系来决定顺序。

在您的情况下,绝对Main-Ear应该最后构建。

让我们考虑以下示例。

我有模块ABC。ModuleA依赖于 module CB而 moduleC依赖于 module B。然后maven建筑顺序将是

B
C
A  
于 2013-09-05T07:10:50.763 回答