Maven.2

5.依赖管理(了解)

5.1依赖传递

直接依赖:在当前项目中,通过依赖配置建立的依赖关系

间接依赖:被依赖的资源,如果还依赖其他资源,那么当前项目间接依赖其他资源

5.2依赖冲突

依赖冲突是指项目依赖的某一个jar包,有多个不同的版本,因而造成类包版本冲突。

解决方法:

1、第一生命者优先:调顺序(谁先定义的就用谁的传递依赖:即调换spring-aop和spring-context位置 )
2、路径近者优先:直接引入 (直接依赖级别高于传递依赖:即直接引入spring-beans )
3、排除依赖

如图所示:

很好理解,当spring-core依赖出现冲突时,在不影响项目运行的情况下,可以将该冲突排除掉,即避让冲突
4、版本锁定

使用dependencyManagement 进行版本锁定

如图所示:

就是咬死了,你必须按我要的版本来,别的哪个版本都不好使!

效果如下:

6.依赖范围

6.3.1.什么是依赖范围?

依赖的jar包在默认情况下可以在任何范围内使用,可以通过scope标签来控制其作用范围。作用范围如下图:

很棒的一张图,但是有些看不懂。。。。

那这样呢?

还是有点懵?没关系,单个拆解

首先 scope,我们可以将其认为是依赖的生效范围

compile:翻译过来就是默认,其生效范围即默认在全局生效,如图所示:

可以在main包下的java运行生效,也可以在test包下的测试java中生效,也不影响打包中的jar

(ps:其实可以不写)

test:测试,再熟悉不过了,其生效范围就像它的名字一样,仅在测试中生效

一个test范围,在test类中:

毫无违和感,没有任何异常。

再看看 main:

结果显而易见

那么,打包呢?

看起来更加惨烈

我们甚至无法找到本应出现的war压缩包,以及我们的jar包。

因此,test依赖范围仅在test测试类中生效。

provided,其生效范围则是仅限main与test,并不负责打包。

runtime,单看run,便知道是跟运动有关的范围。

那么在主带码,测试代码,打包中,主带码基本是静态的,而test测试代码则是经常运行进行测试,测试运行完,便是打包,将jar包存放至本地仓库。

所以,测试类及打包是属于运行,就是runtime的生效范围。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值