Maven构建顺序(多个模块)

tes*_*dtv 12 java build maven

我有一个Maven父项目,它有多个子/模块...我有以下pom.xml为main/parent;

<modules>
        <module>Main-Ear</module>
        <module>Sub-Web</module>
        <module>Sub-Ui</module>
        <module>Sub-Services</module>
        <module>Sub-SSO-Login</module>
  </modules>
Run Code Online (Sandbox Code Playgroud)

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

Main
Sub-Services
Sub-SSO-Login
Sub-UI
Sub-Web
Main-Ear
Run Code Online (Sandbox Code Playgroud)

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

Sam*_*uca 12

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

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

反应器排序

由于多模块构建中的模块可以相互依赖,因此反应堆必须以保证在需要之前构建任何项目的方式对所有项目进行排序.

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

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

请注意,仅使用"实例化"引用 - dependencyManagement和pluginManagement元素不会导致更改reactor排序顺序


Ruc*_*era 5

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

在你的情况下,绝对Main-Ear应该建立最后.

让我们考虑以下示例.

我有模块A,BC.模块A具有依赖性从模块CB而模块C具有从模块依赖B.然后maven建立订单

B
C
A  
Run Code Online (Sandbox Code Playgroud)