第二节 聚合
一、为什么需要聚合
二、如何实现聚合
三、测试聚合

第二节 聚合

一、为什么需要聚合

使用继承后,需要手动逐个安装到仓库后依赖才能够生效。修改源码后也需要逐个手动进行clean、compile操作。而使用了聚合之后就可以批量进行Maven工程的安装、清理工作。
聚合关系是指多个项目共同组成一个项目。 用一个“总工程”将各个“模块工程”汇集起来,作为一个整体对应完整的项目。对外看起来是一个项目。
父项目和子项目在形式上不是并列关系,而是包含和被包含的关系。
必须先有继承关系。在聚合工程中, 是一个双向的关系。父项目是整体,子项目是部分。
02.聚合 - 图1

二、如何实现聚合

创建四个Maven项目,分别为父项目:pro06_myshopping,三个模块:product,payment,order,如上图所示:
注意:创建三个模块时要在父项目上单击右键选择new—-module,创建出来的子项目在父项目内部,对外以父项目作为一个整体提供。

父项目:
pom

product
payment
order

子项目:

pro06_myshopping
com.atguigu.maven
1.0-SNAPSHOT

4.0.0

order
子项目如和父项目的groupId、version一致,则只需要指定artifactId即可

三、测试聚合

  • 在聚合关系中, 子项目明确父项目, 但是父项目明确子项目,是双向关系
  • 聚合关系其实是一个大项目包含多个子项目,对父项目进行clear、compile、install等命令,是对所有子项目进行clear、compile、install命令。但是如果对一个子项目进行maven操作,不影响其他子项目。
  • 聚合Maven项目间的继承是pom资源间的继承,不是项目功能代码的继承
    • 子项目可以继承父项目的资源(父项目POM文件中资源),即使test、provided资源也可以继承
    • 子项目无法继承父项目自身资源,所以父项目不进行java代码开发
  • 和继承一样,可以在父项目中通过dependencyManagement来管理依赖
  • 聚合的目的是能够快速的构建项目,继承的目的是减少重复配置。

概念的对应关系:
从继承关系角度来看:

  • 父工程
  • 子工程

从聚合关系角度来看:

  • 总工程
  • 模块工程