1.解决的问题:
此时tlias-web-management模块的父工程是tlias-parent,该模块又依赖了tlias-pojo,tlias-utils模块。那么此时,我们要将tlias-web-management模块打包,是比较繁琐的。因为进行项目打包,maven会从本地仓库来查找tlias-parent的父工程和它所依赖的模块tlias-pojo和tlias-utils,而本地仓库目前是没有这几个依赖的。
所以我们在打包tlias-web模块前,需要将tlias-parent,tlias-pojo,tlias-utils分别执行install生命周期安装到maven的本地仓库,然后再针对tlias-web-management模块执行package打包操作。
如果依赖进一步错综复杂,操作会十分繁琐。
这时我们通过maven的聚合就可以轻松实现项目的一键构建(清理,编译,测试,打包,安装等)。
2.概念
聚合:将多个模块组织成一个整体,同时进行项目的构建。
聚合工程:一个不具有业务的空工程(有且仅有一个pom文件)【ps:一般来说,继承关系中的父工程与聚合关系中的聚合工程是同一个,父工程也有且仅有一个pom文件】
作用:快速构建项目(无需根据依赖关系手动构建,直接在聚合工程上)
3.实现
在maven中,我们可以在聚合工程中通过<modules>设置当前聚合工程所包含的子模块的名称。我们可以在tlias-parent中,添加如下配置来指定当前聚合工程需要聚合的模块:
<modules>
<module>../tlias-pojo</module>
<module>../tlias-utils</module>
<module>../tlias-web-management</module>
</modules>
进行如上配置后我们只需要在聚合工程上统一进行操作就可以了,无需在每一个模块上进行编译打包安装等操作。
4.效果
tlias-parent中执行package打包指令,它所聚合的所有模块都会执行package指令。
【其实感觉说如果继承是相同依赖的提取,那么聚合就是相同操作的提取。】