maven3实战之坐标和依赖(传递性依赖)
----------
1.何为传递性依赖
假如有一个account-email项目,该项目有一个org.springframework:spring-core:2.5.6的依赖,而实际上spring-core也有它自己的依赖,我们可以直接访问位于中央仓库的该构件的POM: http://repo1.maven.org/maven2/org/springframework/spring-core/2.5.6/spring-core-2.5.6.pom。该文件包含了一个commons-logging依赖。该依赖没有声明依赖范围,那么其依赖范围就是默认的compile。同时回顾一下account-email,spring-core的依赖范围也是compile。account-mail有一个compile范围的spring-core依赖,spring-core有一个compile范围的commons-logging依赖,那么commons-logging就会成为account-email的compile范围依赖,commons-loggins是account-email的一个传递性依赖。
有了传递性依赖机制,在使用spring的时候就不用去考虑它依赖了什么,也不用担心引入多余的依赖。maven会解析各个直接依赖的POM,将那些必要的间接依赖,以传递依赖的形式引入到当前的项目中。
2.传递性依赖和依赖范围
依赖范围不仅可以控制依赖与三种classpath的关系,还对传递性依赖产生影响。上面的例子中,account-email对于spring-core的依赖范围是compile,spring-core对于commons-logging的依赖范围是compile,那么account-email对于commons-logging这一传递性依赖的范围也就是compile。假设A依赖B,B依赖C,我们说A对于B是第一直接依赖,B对于C是第二直接依赖,A对于C是传递性依赖。第一直接依赖的范围和第二直接依赖的范围决定了传递性依赖的范围,如下图,最左边一列表示第一直接依赖范围,最上面一行表示第二直接依赖范围,中间交叉单元格表示传递性依赖范围。
|
compile |
test |
provided |
runtime |
compile |
compile |
-- |
-- |
runtime |
test |
test |
-- |
-- |
test |
rpovided |
provided |
-- |
provided |
provided |
runtime |
runtime |
-- |
-- |
runtime |
分享到:
相关推荐
Maven3实战
Maven3实战笔记05——仓库依赖解析与插件解析。
Maven3_04_maven的依赖特性 Maven3_05_maven的聚合和继承 Maven3_06_复习maven的基本内容 Maven3_07_nexus的介绍和安装 Maven3_08_nexus的配置 Maven3_09_发布项目到nexus中 Maven3_10_生命周期和插件简介 Maven3_11...
Maven3实战笔记 Maven3实战笔记 Maven3实战笔记 Maven3实战笔记
springboot 的maven依赖包,含有所有maven依赖,网络不好的可以来下。压缩包3.
Maven3实战笔记(整合)
Maven3实战笔记(全) 从安装配置,到仓库依赖,到集成测试,到插件管理,到构建web 作者风趣幽默的介绍了maven3的使用 强烈推荐
Maven简介,maven与ant比较,windows下安装配置,坐标依赖,仓库,部署第三方构建
Maven3实战笔记04——Maven的生命周期和插件。
一键清理maven仓库中下载失败的依赖包 1.修改path路径,将path路径修改为你的maven仓库存放磁盘的全路径 2.双击运行,即可删除下载失败的jar包 3.运行完毕,按任意键退出即可! 4.正确操作完成退出后,再次打开,会出现...
Maven实战 高清 Maven实战 高清 Maven实战 高清 Maven实战 高清 Maven实战 高清 Maven实战 高清 Maven实战 高清 Maven实战 高清 Maven实战 高清
Maven3实战笔记08——Maven反应堆。
Java使用Maven导入Spring依赖
Oracle依赖,maven依赖,ojdbc8的依赖
Maven实战Maven实战Maven的安装、配置及使用入门
Maven实战(基于Maven3).pdf(340页)
Maven3实战笔记10——使用Maven进行测试。
包括slf4j,log4j,mybatis,commons-io,commons-lang及其他commons,以及mail,junit,generator自动生成相关依赖,mysql等全套依赖
Maven3实战笔记07——继承的介绍。
Maven3实战笔记06——聚合的介绍。