聚合是为了方面快速构建项目,而继承则是为了消除重复配置。
是否遇到过这样的情况,当你从公司git地址上clone项目时,本来是一个项目,clone后会出现好几个maven项目呢?
这就是maven的聚合功能。
当使用聚合时,需要几个注意地方:
①:主聚合pom文件中,<packaging>节点必须为pom。
②:在project节点下加入待聚合的节点信息如:
<modules>
<module>xxx</module>
<module>yyy</module>
</modules>
③:如果待聚合项目的模块不是父子类结构,而是平行模块(或其他)的时候,则需要相应的修改模块地址:
<!--假设是平行结构--!>
<modules>
<module>../\xxx</module>
<module>../yyy</module>
</modules>
当使用继承时,父模块无需修改,而仅仅只需要子木块去继承即可,
在project节点下加入:
<parent>
<groupId>com.my.test</groupId>
<artifactId>myMaven</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../parent/pom.xml</relativePath>
</parent>
并且,可以使用dependencyManagement和pluginManagement两个标签进行继承时候的,插件和依赖的管理。
意思是,当子模块继承父模块时,如果使用*management时,只有当子类中配置了相应的dependency或者plugin,并且其
groupId和artifactId与父模块中一致时,父模块中*management才会影响实际的插件行为。
在一个,当使用继承或者聚合一起使用时,反应堆(Reactor)的构造顺序是怎样的呢?
①:根据父模块的modules中顺序来;
②:如果子模块在父模块之前,则应该先构造父模块;
③:模块中的依赖关系会将反应堆构成一个有向非循环图,不允许出现循环,如果出现
模块A依赖于B,而B又依赖于A的情况,maven就会报错;