我有一个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究竟从哪里获取构建顺序?
答案 0 :(得分:12)
您无法手动控制构建顺序:
来自Maven项目文档(Guide to Working with Multiple Modules):
反应堆排序
因为多模块构建中的模块可以相互依赖, 重要的是,反应堆以一种方式对所有项目进行分类 保证任何项目在需要之前建立。
在对项目进行排序时,以下关系得到遵守:
- 项目依赖于构建中的另一个模块
- 插件声明,其中插件是构建
中的另一个模块- 构建
中另一个模块的插件依赖项- 构建中另一个模块的构建扩展声明元素中声明的顺序(如果没有其他规则适用)
请注意,仅使用“实例化”引用 - dependencyManagement和pluginManagement元素不会导致 更改为反应堆排序顺序
答案 1 :(得分:5)
Maven
没有从我们在主pom.xml
中定义的模块构建顺序中获取。 Maven
通过考虑与其他模块的模块依赖关系来决定顺序。
在您的情况下,绝对Main-Ear
最后应该构建。
让我们考虑以下示例。
我有模块A
,B
和C
。模块A
具有模块C
和B
的依赖关系,而模块C
具有模块B
的依赖关系。然后maven
建筑顺序将是
B
C
A