Maven依赖的详细介绍
在上一篇博客中,已经讲述了,Maven的核心概念,其中包含Maven依赖的简单介绍
这篇博客对Maven依赖进行详细的讲解
有关Maven依赖的简单介绍
依赖的传递性
依赖分为直接依赖和传递过来的依赖,其中依赖的范围是compile的依赖是可以传递的
好处:可以传递的依赖可以不必再每个模块工程中都重复声明,在“最下面”那个工程中传递一次即可
注意:非compile的依赖不能传递,所以在各个工程模块中,如果有需要就得重复声明这个依赖
依赖的排除
与依赖的传递性有点相反的意思,就是把不需要或不稳定的jar包,不让它加入当前工程(由于传递性可能会加入到该工程)
①需要设置依赖排除的场合
②依赖排除的设置方式
在…中加入,那么就排除了commons-logging
sequenceDiagram
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
注意在哪个工程里排除,不会影响到其他工程,如果其他工程需要排除,又需要重复排除
依赖的原则
①作用:解决模块工程之间jar包冲突问题
②情景设定一:
由于依赖的传递性,MakeFriends会得到HelloFriend和Hello的传递,那么MakeFriends到底会得到那个依赖呢
根据依赖的路径最短者优先原则,MakeFriends将会得到HelloFriend的依赖,如下图所示
情景设定二:
验证路径相同时先声明者优先原则
先声明指的是dependency标签的声明顺序
统一管理依赖的版本
情景设定:
`
这里对Spring各个jar包的依赖版本都是4.0.0
如果需要统一升级为4.1.1,怎么办?手动逐一修改不可靠
建议配置方式
①在properties标签内使用自定义标签统一声明版本号
sequenceDiagram
<properties>
<atguigu.spring.version>4.0.0.RELEAESE</atguigu.spring.version>
</properties>
②在需要统一版本的位置,使用${自定义标签名}引用声明的版本号
sequenceDiagram
<version>${atguigu.spring.version}</version>
③其实properties标签内使用自定义标签声明数据配置并不是只能用于声明依赖的版本号,凡是需要统一声明后使用的场合都可以使用