一、聚合
如果我们想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合
1.1、聚合配置代码
模块一 模块二 模块三
例如:对项目的Hello、HelloFriend、MakeFriends这三个模块进行聚合
../Hello ../HelloFriend ../MakeFriends
其中module的路径为相对路径。
二、继承
继承为了消除重复,我们把很多相同的配置提取出来,例如:grouptId,version等
2.1、继承配置代码
me.gacl.maven ParentProject 0.0.1-SNAPSHOT ../ParentProject/pom.xml
2.2、继承代码中定义属性
继承代码过程中,可以定义属性,例如:
UTF- 4.9 0.0.1-SNAPSHOT
访问属性的方式为${junit.version},例如:
junit junit ${junit.version} test
2.3、父模块用dependencyManagement进行管理
junit junit ${junit.version} test cn.itcast.maven HelloFriend ${maven.version} jar compile
这样的好处是子模块可以有选择行的继承,而不需要全部继承。
三、聚合与继承的关系
聚合主要为了快速构建项目,继承主要为了消除重复
四、聚合与继承实战演练
创建四个Maven项目,如下图所示:
这四个项目放在同一个目录下,方便后面进行聚合和继承
Parent项目是其它三个项目的父项目,主要是用来配置一些公共的配置,其它三个项目再通过继承的方式拥有Parent项目中的配置,首先配置Parent项目的pom.xml,添加对项目的Hello、HelloFriend、MakeFriends这三个模块进行聚合以及jar包依赖,pom.xml的配置信息如下:
Parent项目的pom.xml配置
4.0.0 me.gacl.maven Parent 0.0.1-SNAPSHOT pom Parent http://maven.apache.org ../Hello ../HelloFriend ../MakeFriends UTF-8 4.9 0.0.1-SNAPSHOT junit junit ${junit.version} test me.gacl.maven Hello ${maven.version} compile me.gacl.maven HelloFriend ${maven.version}
在Hello项目的pom.xml中继承Parent项目的pom.xml配置
4.0.0 Hello me.gacl.maven Parent 0.0.1-SNAPSHOT ../Parent/pom.xml junit junit
在HelloFriend项目的pom.xml中继承Parent项目的pom.xml配置
4.0.0 HelloFriend HelloFriend me.gacl.maven Parent 0.0.1-SNAPSHOT ../Parent/pom.xml junit junit me.gacl.maven Hello
在MakeFriends项目的pom.xml中继承Parent项目的pom.xml配置
4.0.0 MakeFriends me.gacl.maven Parent 0.0.1-SNAPSHOT ../Parent/pom.xml junit junit me.gacl.maven HelloFriend
以上的四个项目的pom.xml经过这样的配置之后,就完成了在Parent项目中聚合Hello、HelloFriend、MakeFriends这三个子项目(子模块),而Hello、HelloFriend、MakeFriends这三个子项目(子模块)也继承了Parent项目中的公共配置,这样就可以使用Maven一次性构建所有的项目了,如下图所示:
选中Parent项目的pom.xml文件→【Run As】→【Maven install】,这样Maven就会一次性同时构建Parent、Hello、HelloFriend、MakeFriends这四个项目,如下图所示: