maven(八)maven的依赖范围、依赖传递、依赖冲突、聚合和继承

MAVEN

  • maven的依赖范围、依赖传递、依赖冲突、聚合和继承

目录

MAVEN

maven的依赖范围、依赖传递、依赖冲突、聚合和继承

知识点

maven依赖范围

maven传递依赖

maven依赖冲突

Maven继承:父模块的pom文件修改

Maven聚合:父模块的pom文件修改


  • 知识点

第一个0表示大版本号

第二个0表示分支版本号

第三个0表示小版本号

0.0.1

snapshot快照

alpha内部测试

 

 

 

 

 

  • maven依赖范围

Maven因为执行一系列编译、测试和部署运行等操作,在不同的操作下使用的classpath不同,依赖范围就是用来控制依赖与三种 classpath(编译classpath、测试classpath、运行classpath)的关系。<br>

依赖范围 scope<br>

compile:默认范围,使用此依赖范围对于编译、测试、运行三种 classpath 都有效,即在编译、测试和运行的时候都要使用该依赖jar包<br>

provided:编译测试有效

runtime:测试运行时有效

test:在测试时有效

system:与本机系统相关联,移植性差(和provided范围一致)

 

  • maven传递依赖

简单讲就是间接依赖关系,比如:B依赖A,C依赖B,那么C也就依赖A了,C和A的依赖关系就是传递依赖。<br>

Maven对于依赖的管理是这样的,当在POM.XML文件中发现配置了,某个依赖,就先去自己本地的依赖仓库中去找对应的依赖,如果没找到,就去Maven的中央依赖仓库中去找,如果还是没找到,就会生气报错。<br>

对于项目而言,比如上面的例子A/B/C我们需要在B的POM.XML依赖关系中配置上A的坐标,并且需要对A进行编译(compile)、打包(package)、安装(install)到本地仓库等工作,B才能实现对A的依赖。C依赖与B,并且B依赖与A,C的依赖库里会自动的将A项目的jar包也导进来的。如果我们不想这样,那么就需要用到排除依赖这个标签了<exclusion></exclusion>——此标签就是排除对传递依赖的依赖关系的一种方式。

另外,在settings.xml文件中可以设置maven默认jre版本——使用<profile></profile>标签

 

测试:

 

 

 

添加依赖坐标

 

执行结果

 

 

对B

执行clean compile

 

排除依赖

运行结果

 

 

 

  • maven依赖冲突

由于依赖的内容存在多个版本,如果出现某一个POM依赖多个版本时,则称之为依赖冲突

依赖冲突遵循两个原则:

1、短路优先(依赖的内容,传递次数越小越优先)

2、先声明则优先(在POM.xml中,哪个依赖的内容声明dependency靠前,则优先

 

  • Maven继承:父模块的pom文件修改

新增properties标签管理版本

将dependencies标签放入dependencyManagement标签中

 

  • Maven聚合:父模块的pom文件修改

<package>pom</package>

 

<modules>

                   <module>子模块项目名一</module>

                   <module>子模块项目名二</module>

</modules>

运行结果:

猜你喜欢

转载自blog.csdn.net/RayMa0305/article/details/81428312