大连市住房与城乡建设部网站,中国最大的编程公司,云南网网站,中文网页设计模板下载在实际的开发过程中#xff0c;我们所接触的项目一般都由多个模块组成。在构建项目时#xff0c;如果每次都按模块一个一个地进行构建会十分得麻烦#xff0c;Maven 的聚合功能很好的解决了这个问题。
聚合
使用 Maven 聚合功能对项目进行构建时#xff0c;需要在该项目中…在实际的开发过程中我们所接触的项目一般都由多个模块组成。在构建项目时如果每次都按模块一个一个地进行构建会十分得麻烦Maven 的聚合功能很好的解决了这个问题。
聚合
使用 Maven 聚合功能对项目进行构建时需要在该项目中额外创建一个的聚合模块然后通过这个模块构建整个项目的所有模块。聚合模块仅仅是帮助聚合其他模块的工具其本身并无任何实质内容因此聚合模块中只有一个 POM 文件不像其他的模块一样包含 src/main/java、src/test/java 等多个目录。 与父模块相似聚合模块的打包方式packaging也是 pom用户可以在其 POM 中通过 modules 下的 module 子元素来添加需要聚合的模块的目录路径。 修改 Root 模块 POM 的配置如下。
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdnet.biancheng.www/groupIdartifactIdRoot/artifactIdversion1.0/version!--定义的父类pom.xml 打包类型使pom --packagingpom/packagingproperties!-- 定义一些属性 --project.build.sourceEncodingUTF-8/project.build.sourceEncodinglog4j.version1.2.17/log4j.versionjunit.version4.9/junit.versionsystem.version1.0/system.versionmysql.connector.version5.1.18/mysql.connector.versionc3p0.version0.9.1/c3p0.version/properties!--dependencyManagement 标签用于控制子模块的依赖版本等信息 --!-- 该标签只用来控制版本不能将依赖引入 --dependencyManagementdependenciesdependencygroupIdlog4j/groupIdartifactIdlog4j/artifactId!--引用的properties标签中定义的属性 --version${log4j.version}/version/dependencydependencygroupIdjunit/groupIdartifactIdjunit/artifactId!--引用的properties标签中定义的属性 --version${junit.version}/version!-- scopetest/scope --/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactId!--引用的properties标签中定义的属性 --version${mysql.connector.version}/versionscoperuntime/scope/dependencydependencygroupIdc3p0/groupIdartifactIdc3p0/artifactId!--引用的properties标签中定义的属性 --version${c3p0.version}/version/dependency/dependencies/dependencyManagement!--添加需要聚合的模块--modulesmodule../App-Core-lib/modulemodule../App-Data-lib/modulemodule../App-UI-WAR/module/modules
/project
打开命令行窗口跳转到 Root 模块所在目录执行以下 Maven 命令对 Root 进行构建。
mvn clean install
聚合模块在构建时Maven 会先解析聚合模块的 POM、分析需要构建的模块并根据这些模块之间的关系计算出构建顺序然后根据这个顺序依次构建各个模块。 构建完成后输出的是一个项目构建的小结报告该报告中包括各个模块构建成功与否、构建花费的时间、以及整个构建构成所花费的时间等信息。
继承和聚合的关系
在实际的项目中一个模块往往既是聚合模块又是其他项目的父模块那么 Maven 的继承和聚合的关系是如何的呢 Maven 的继承和聚合的目的不同继承的目的是为了消除 POM 中的重复配置聚合的目的是为了方便快速的构建项目。 对于继承中的父模块来说它跟本不知道那些模块继承了它但子模块都知道自己的父模块是谁。 对于聚合模块来说它知道哪些模块被聚合了但那些被聚合的模块根本不知道聚合模块的存在。 两者在结构和形式上还是有一定的共同点的最直观的就是两者的打包方式都是 pom两者除了 POM 外都没有实际的代码内容。