我有一个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>
然而,我发现实际的构建顺序有所不同。。。构建之后,实际订单看起来像;
Main
Sub-Services
Sub-SSO-Login
Sub-UI
Sub-Web
Main-Ear
在这种情况下,Maven从哪里获得构建订单?
您无法手动控制构建顺序:
来自Maven项目文档(使用多个模块指南):
反应器分拣
由于多模块构建中的模块可以相互依赖,反应堆对所有项目进行分类是很重要的保证任何项目都在需要之前建成。
在对项目进行排序时,将尊重以下关系:
- 对生成中另一个模块的项目依赖关系
- 插件声明,其中插件是构建中的另一个模块
- 插件对构建中另一个模块的依赖
- 生成中另一个模块的生成扩展声明元素中声明的顺序(如果没有其他规则适用)
请注意,只使用"实例化"引用-dependencyManagement和pluginManagement元素不会导致更改为反应器排序顺序
Maven
没有采用我们在主pom.xml
中定义的模块构建顺序。CCD_ 3通过考虑模块与其他模块的依赖性来决定顺序。
在您的情况下,Main-Ear
肯定应该最后构建。
让我们考虑下面的例子。
我有模块A
、B
和C
。模块A
具有来自模块C
和B
的依赖性,而模块C
具有来自模块B
的依赖性。那么maven
的建筑订单将是
B
C
A