Java Maven构建顺序(多个模块)

Java Maven构建顺序(多个模块),java,maven,build,Java,Maven,Build,我有一个Maven父项目,它有多个子/模块…我的主/父项目有以下pom.xml <modules> <module>Main-Ear</module> <module>Sub-Web</module> <module>Sub-Ui</module> <module>Sub-Services</module> &

我有一个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>

在这种情况下,Maven从何处获取构建顺序?

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

在您的情况下,
主Ear
肯定应该最后生成

我们考虑下面的例子。

我有模块
A
B
C
。模块
A
与模块
C
B
有依赖关系,而模块
C
与模块
B
有依赖关系。然后,
maven
建筑顺序将

B
C
A  

无法手动控制生成顺序:

来自Maven项目文档():

反应器分拣

因为多模块构建中的模块可以相互依赖, 重要的是,反应堆以一种 保证任何项目在需要之前完成

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

  • 项目依赖于生成中的另一个模块
  • 插件声明,其中插件是构建中的另一个模块
  • 插件依赖于构建中的另一个模块
  • 生成中另一个模块上的生成扩展声明,其顺序在元素中声明(如果没有其他规则适用)
请注意,仅使用“实例化”引用- dependencyManagement和pluginManagement元素不会导致 更改反应器排序顺序


所以,你是说pom.xml中没有明确的声明……但是Maven自己做出决定……基于依赖性……@testndtv Yes。我认为(但我不确定)如果两个子模块之间没有依赖关系,这可能仍然取决于您声明的顺序。e、 g.A->C和B->C,然后Maven可以使用声明顺序来确定构建了A或B中的哪一个first@AdrianShum如果彼此之间没有依赖关系,那么maven将使用我们定义的顺序
B
C
A