Day15-04.maven高级-继承与聚合-聚合实现
(1)聚合
分模块之后,我们的一个项目就会被拆成多个模块,而多个模块之间还会存在依赖关系,比如我们案例中的web-management以阿里utils这个模块,还要依赖pojo这个模块,如果我们开发的是一个大型项目,拆分的模块比较多,有可能模块之间的关系错综复杂,此时如果我们的项目已经开发完毕了,我们要将web-management模块打包上线,该怎么操作?
执行maven当中的package生命周期就行了吗?看操作
我们不是有这两个模块吗?为什么没有找到这个jar包呢?此时因为我们在执行package、install这些生命周期的时候,他会到本地仓库当中去找这两个模块,一个是pojo模块,一个是utils这个模块,然而本地仓库中没有这两个模块,所以web-management就构建失败了。接下来要往本地仓库安装这两个jar包,双击install就可以。全都install完成之后才打包完成。
这个过程非常的繁琐,我们必须要将这个模块他的父工程,以及他所依赖的其他模块必须要先按照对应的顺序安装到maven的本地仓库,然后才可以对这个模块进行打包,如果这个项目涉及到的模块比较多,模块之间的关系也比较复杂,此时操作起来就会非常繁琐,maven的聚合就是用来解决这个问题的。让我们轻松实现项目的一键构建,包括一键编译、一键打包等等。
(2)聚合
1、聚合:将多个模块组织成一个整体,同时进行项目的构建
2、聚合工程:一个不具有业务功能的“空”工程(有且仅有一个pom文件)
3、作用:快速构建项目(无需根据依赖关系手动构建,直接在聚合工程上构建即可)
(3)如何实现聚合?
1、maven中可以通过modules设置当前聚合工程所包含的子模块名称
注意事项:聚合工程中所包含的模块,在构建时,会自动根据模块间的依赖关系设置构建顺序,与聚合工程模块的配置书写位置无关。
(4)案例
(5)总结
1、作用:
①:聚合用于快速构建项目
②:继承用于简化依赖配置、统一依赖管理
2、相同点:
①:聚合与集成的pom.xml文件打包方式均为pom,可以将两种关系制作到同一个pom文件中
②:聚合与冀衡均属于设计型模块,并无实际的模块内容
3、不同点:
①:聚合是在聚合工程中配置关系,聚合可以感知到参与聚合的模块有哪些
②:继承是在子模块中配置关系,父模块无法感知哪些子模块继承了自己
感知到参与聚合的模块有哪些