目录
1. project与module之间的继承和聚合
1.1 概念
- 1. project与module之间的继承和聚合
- 1.1 概念
- 1.2 作用
- 1.3 使用实例
- 2. 超级pom
- 2.1 简介
- 2.2 超级pom详细说明
- 3. 有效pom
- 3.1 简介
- 3.2 查看有效pom命令
maven项目先创建了一个project A,然后在project A(父工程)下面创建了一个module B(子工程)。则B的pom.xml能继承A的pom.xml的配置
1.2 作用在父工程统一管理所有module的依赖版本。对同一个项目的多个module进行依赖,能方便的使用同一版本
1.3 使用实例父工程的pom.xml如下。
4.0.0
com.hh
maven-learn
0.1
pom
maven-module1
1.15.0
org.apache.flink
flink-connector-jdbc
${flink.version}
provided
org.apache.flink
flink-connector-hive_2.12
${flink.version}
provided
子module的pom.xml如下
4.0.0
maven-learn
com.hh
0.1
maven-module1
org.apache.flink
flink-connector-jdbc
org.apache.flink
flink-connector-hive_2.12
1.14.5
compile
说明如下:
- 通过修改父工程的pom.xml的flink.version标签的版本号,就能影响到dependencyManagement中的版本号。再通过继承,能影响子module的版本号
- 聚合的好处:很多maven构建命令都可以在“父工程”中一键执行。以mvn install 命令为例:在父工程执行mvn install可以一键完成安装,先安装父工程,再安装子module。如果哪个子module被依赖,则优先安装。注意避免死循环依赖
当我们创建一个project时,都会默认继承Maven的超级pom。超级pom定义了Maven在构建过程中有很多默认的设定,如:源文件sources存放的目录、测试源文件test-sources存放的目录、构建输出的目录target等
2.2 超级pom详细说明超级pom位于maven的安装目录下的apache-maven-3.8.6\lib\maven-model-builder-3.8.6.jar包内。解压该jar包,在org\apache\maven\model目录下,就可以看到一个文件pom-4.0.0.xml,这就是超级pom。文件内容和说明如下:
4.0.0
central
Central Repository
https://repo.maven.apache.org/maven2
default
false
central
Central Repository
https://repo.maven.apache.org/maven2
default
false
never
${project.basedir}/target
${project.build.directory}/classes
${project.artifactId}-${project.version}
${project.build.directory}/test-classes
${project.basedir}/src/main/java
${project.basedir}/src/main/scripts
${project.basedir}/src/test/java
${project.basedir}/src/main/resources
${project.basedir}/src/test/resources
maven-antrun-plugin
1.3
maven-assembly-plugin
2.2-beta-5
maven-dependency-plugin
2.8
maven-release-plugin
2.5.3
${project.build.directory}/site
release-profile
performRelease
true
true
maven-source-plugin
attach-sources
jar-no-fork
true
maven-javadoc-plugin
attach-javadocs
jar
true
maven-deploy-plugin
true
3. 有效pom
3.1 简介
pom的继承是单继承的。子工程pom继承父工程pom,可以覆盖父工程pom的配置;父工程pom继承超级pom,可以覆盖超级pom的默认配置;最后形成一个有效pom(effective POM)。而Maven的执行构建是按照最终的有效pom来的
3.2 查看有效pom命令可以使用如下命令查看有效pom
C:\Users\dell\Desktop\maven-learn>mvn help:effective-pom