maven 笔记-依赖管理

依赖范围:

其中依赖范围scope用来控制依赖和编译,测试,运行的classpath的关系.主要的是三种依赖关系如下:

 

1.compile默认编译依赖范围。对于编译,测试,运行三种classpath都有效

2.test:测试依赖范围。只对于测试classpath有效

3.provided:已提供依赖范围。对于编译,测试的classpath都有效,但对于运行无效。因为由容器已经提供,例如servlet-api

4.runtime:运行时提供。例如:jdbc驱动


依赖传递:

ABC

 

B工程依赖A工程,C工程依赖B工程,那么B工程是C工程的直接依赖,A工程是C工程的间接依赖


由于默认是compile,所以当形成以上的依赖链条时则在C工程中会有A和B的依赖工程。

如图:


依赖传递范围:



左边第一列表示第一直接依赖范围

上面第一行表示第二直接依赖范围

中间的交叉单元格表示传递性依赖范围。

 

总结:

Ø  当第二依赖的范围是compile的时候,传递性依赖的范围与第一直接依赖的范围一致。

Ø  当第二直接依赖的范围是test的时候,依赖不会得以传递。

Ø  当第二依赖的范围是provided的时候,只传递第一直接依赖范围也为provided的依赖,且传递性依赖的范围同样为 provided

Ø  当第二直接依赖的范围是runtime的时候,传递性依赖的范围与第一直接依赖的范围一致,但compile例外,此时传递的依赖范围为runtime


依赖冲突


 在maven中存在两种冲突方式:一种是跨pom文件的冲突,一致是同一个pom文件中的冲突。

     pom文件的冲突

MavenFirstpom文件中依赖来junit4.9版本,那边MavenSecondMavenThird中都是使用了4.9版本。


如果MavenSecond中重新依赖junit4.8版本,那么MavenSecondMavenThird中都是使用了4.8本,这体现来依赖的就近使用原则

依赖的jar包如下:



       同一个pom文件的冲突

  可选依赖

Optional标签标示该依赖是否可选,默认是false。可以理解为,如果为true,则表示该依赖不会传递下去,如果为false,则会传递下去。

排除依赖

Exclusions标签可以排除依赖



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值