maven pom 聚合项目功能
简介
在maven pom的官方文档中聚合的概念是:Project Aggregation is similar to Project Inheritance. But instead of specifying the parent POM from the module, it specifies the modules from the parent POM. By doing so, the parent project now knows its modules, and if a Maven command is invoked against the parent project, that Maven command will then be executed to the parent's modules as well.
谷歌翻译:项目聚合类似于项目继承。但是它不是从模块中指定父 POM,而是从父 POM 中指定模块。通过这样做,父项目现在知道它的模块,并且如果针对父项目调用了 Maven 命令,那么该 Maven 命令也将被执行到父的模块。
从聚合项目的概念上看,聚合项目是在pom中指定子模块,且作用与该pom上的maven命令将同等作用于子模块.
也就是通过一个pom发现其他子模块(子pom)的功能,然后进行统一的构建,清理,打包等.属于降低工程复杂度使其便于管理的功能.
使用方法(例子来自于官方文档)
该功能在使用时必须进行以下两个操作
1.将父 POM 中的packaging标签更改为值“pom”。
2.在父 POM 中指定其模块(子 POM)的目录(相对路径)。
以下为修改后的父pom
当父pom在子pom的上一级文件夹时,module标签中可以直接填写子模块的artifactId
文件相对关系
.
|-- my-module
| `-- pom.xml
`-- pom.xml
对应的父pom修改方式
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<version>1</version>
<packaging>pom</packaging>
<modules>
<module>[artifactId]</module>
...
</modules>
</project>
当父pom不在子pom上一级文件时,module标签中需要填写子pom相对父pom的相对路径
文件相对关系
.
|-- my-module
| `-- pom.xml
`-- parent
`-- pom.xml
对于的父pom修改方式
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<version>1</version>
<packaging>pom</packaging>
<modules>
<module>../[artifactId]</module>
</modules>
</project>
聚合+继承的使用
关于聚合项目和继承项目两种功能同时使用,只需要满足以下三个要求就可以了
1.在每个子 POM 中指定其父 POM 是谁。
2.将父 POM 中的packaging标签更改为值“pom”。
3.在父 POM 中指定其模块(子 POM)的目录
聚合的使用可以参考上面的方法
继承的使用可以参考下面这条链接
【maven pom的继承功能的使用, 详解】
注
聚合项目功能中,各个子模块的构建顺序是按照其依赖关系来进行构建的.也就是先解析其之间的依赖关系,然后按顺序进行构建
这里贴一条其他人的链接以供参考maven中多个子模块的构建顺序
其他相关文章
参考资料
note
该博客只是为了学习新知识和梳理知识,如有错漏,还请大家指正.