Maven构建顺序(多个模块)

时间:2013-09-05 07:07:49

标签: java maven build

我有一个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究竟从哪里获取构建顺序?

2 个答案:

答案 0 :(得分:12)

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

来自Maven项目文档(Guide to Working with Multiple Modules):

  

反应堆排序

     

因为多模块构建中的模块可以相互依赖,   重要的是,反应堆以一种方式对所有项目进行分类   保证任何项目在需要之前建立。

     

在对项目进行排序时,以下关系得到遵守:

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

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

答案 1 :(得分:5)

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

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

让我们考虑以下示例。

我有模块ABC。模块A具有模块CB的依赖关系,而模块C具有模块B的依赖关系。然后maven建筑顺序将是

B
C
A