1.Maven-简介 2.Maven-安装和配置 3.Maven-POM文件说明 4.Maven-坐标 5.Maven-依赖详解 6.Maven-仓库 7.Maven-生命周期和插件 8.Maven-聚合 9.Maven-继承和反应堆 10.Maven-使用NEXUS创建私服 11.Mavne-配置从NEXUS下载构件和为项目配置独立仓库 12.Maven-使用Hudson进行持续集成及系统配置 13.Maven-创建Hudson任务 14.Maven-Hudson监视任务、用户管理、工作目录
8 Maven-聚合
Maven的聚合特性能够把项目的各个模块聚合在一起构建,而Maven的继承特性则能帮助抽取各模块相同的依赖和插件等配置,在简化POM的同时,还能保证各个模块配置的一致性。8.1 聚合
1) 对于聚合模块来说,其打包方式packaging的值必须为pom,否则就无法构建。
2) POM的name字段是为了给项目提供一个更容易阅读的名字。3) modules,这是实现聚合的最核心的配置。用户可以通过在一个打包方式为pom的Maven项目中声明任意数量的module元素来实现 模块的聚合。每个module的值都是一个当前POM的相对目录。如下图:
为了方便用户构建项目,通常聚合模块放在项目的最顶层,其他模块则作为聚合模块的子目录存在,这样用户得到源码的时候,第一眼发现的就是聚合模块的POM,不用从多模块中去寻找聚合模块来构建整个项目。
备注:聚合模块仅仅是帮助聚合其他模块构建的工具,它本身并无实质的内容。
聚合模块与其他模块的目录结构并非一定要是父子关系,如果使用平行目录结构,聚合模块的POM也需要做相应的修改,以指向正确的模块目录,如下图:可以执行 mvn clean install命令来感受一下,如下图:
分析:
1)Maven会首先解析聚合模块的POM、分析要构建的模块、并计算出一个反应堆构建顺序,然后根据这个顺序依次构建各个模块。反应堆是所有模块组成的一个构件结构。2)执行命令后,在构建正确的情况下能看到各模块的名称,而不是artifactId,这也解释了为什么要在POM中配置合力的name字段,其目的是让Maven的构建输出更清晰。输出的最后是一个项目的构建小报告,包括各个模块构建成功与否、花费的时间,以及整个构建花费的时间、使用的内存等。