概述
在实际的项目开发中,为了更好的组织项目代码,会采用分层架构的方式,这就会使用到maven的多模块特性。
假设项目分为A、B、C、D四层,在父模块的pom.xml中,一般这样来对子模块进行聚合
<modules>
<module>A</module>
<module>B</module>
<module>C</module>
<module>D</module>
</modules>
假设各个子模块间,配置的相互依赖关系如下:
A 依赖 B
B 依赖 C
D 依赖 A
构建父模块,我们能够看到以下输出:
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] C
[INFO] B
[INFO] A
[INFO] D
[INFO]
[INFO] ------------------------------------------------------------------------
这是因为子模块的构建顺序受两个因素影响:
1、父模块中各子模块的声明次序
2、子模块间的依赖关系
实际的构建顺序是这样形成的:
maven按照次序读取pom,如果该pom没有依赖其他子模块,就构建该模块,否则就构建其依赖的模块,如果该依赖模块还依赖于其他的模块,那么就进一步构建依赖的依赖。
在示例中,A模块依赖B,而B模块又依赖C,因此要先构建C,再构建B,然后才能构建A。而D依赖的模块A已经构建了,因此直接构建它。
模块间的依赖关系会将反应堆(Reactor)构成一个有向非循环图,各个模块是该图的节点,依赖关系构成了有向边。这个图不允许出现循环。如果A依赖B,B又依赖A,这样就产生了循环依赖,Maven会报错。
[参考文档]:《Maven实战》
最后
以上就是爱撒娇冬日为你收集整理的maven中多个子模块的构建顺序的全部内容,希望文章能够帮你解决maven中多个子模块的构建顺序所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复