Maven学习笔记(四)——Maven的依赖管理

Maven学习笔记(四)——Maven的依赖管理
原创 2017年12月06日 08:45:07 标签:maven /依赖 33
依赖范围

依赖范围scope用来控制依赖和编译,测试,运行的classpath的关系。主要的是三种。依赖关系如下:
1.compile:默认编译依赖范围。对于编译,测试,运行三种classpath都有效;
2.test:测试依赖范围。只对于测试classpath有效
3.provided:已提供依赖范围。对于编译,测试的classpath都有效,但对于运行无效。
4.runtime:运行时提供。eg:jdbc驱动。

依赖范围(scope) 对于主代码classpath有效 对于测试代码classpath有效 被打包,对于运行时classpath有效 例子
compile Yes Yes Yes log4j
test - Yes - junit
provided Yes Yes - servlet-api
runtime - - Yes JDBC Driver Implementation
依赖传递

依赖冲突

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

跨pom文件的冲突

依赖的就近使用原则。比如:C直接依赖B,间接依赖A,而A和B中有相同但版本不同的jar包,那么C会选择B中的依赖。

同一个pom文件的冲突

因为配置文件是从上到下加载的,所以如果有两个相同但不同版本的jar包,则下面的会覆盖上面的。
比如在一个Maven工程的pom.xml中有两个依赖:


junit
junit
4.9


junit
junit
3.8.1

1
2
3
4
5
6
7
8
9
10
那么该Maven工程会依赖版本为3.8.1的jar包。

可选依赖

Optional标签表示该依赖是否可选,默认为false。如果为true,则该依赖不会传递下去,如果为false,则会传递下去。
比如:C依赖B,B依赖A,在B的pom.xml中对A的依赖下加上true 标签,则C的Maven依赖中就不会把A的资源加载进来,只加载B的资源就可以。

排除依赖

exclusion标签可以排除依赖。



com.zrxjuly.maven
MavenCreate
0.0.1-SNAPSHOT



com.zrxjuly.test
HelloMaven



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值