Maven之依赖范围

依赖范围

        Maven项目在编译、测试、运行时可能会采用不同的classpath,因此需要对这三种情况设置不同的依赖范围,如下为Maven提供的依赖范围类型:

  • compile (编译依赖范围。默认情况)

适用范围:编译、测试、运行

  • test (测试依赖范围)

适用范围:测试

  • provided (已提供依赖范围)

适用范围:编译、测试(运行时已经由环境提供了该依赖)

  • runtime (运行时依赖范围)

适用范围:测试、运行

  • system (系统依赖范围)

适用范围:编译、测试(与provided依赖范围一致,但是必须通过systemPath元素显示指定依赖文件的路径,此类依赖不是通过Maven仓库解析,而是往往与本机系统绑定)

  • import (导入依赖范围)

该依赖不会对三种classpath产生实际的影响

依赖范围与classpath的关系
依赖范围(scope)对于编译classpath有效对于测试classpath有效对于运行classpath有效例子
compileYYYspring-core
test-Y-JUnit
providedYY-servlet-api
runtime-YYJDBC驱动
systemYY-本地的,Maven仓库之外的类库文件

传递性依赖

        依赖范围不仅可以控制依赖与三种classpath的关系,还对传递性依赖产生影响。假如A依赖B,B依赖C,那么A对于B是第一直接依赖,B对于C是第二直接依赖,A对于C是传递性依赖。第一直接依赖和第二直接依赖的范围决定了传递性依赖的范围,如下表所示左边第一列为第一直接依赖范围,第一行为第二直接依赖范围,最终结果显示传递性依赖范围

 compiletestprovidedruntime
compilecompile--runtime
testtest--test
providedprovided-providedprovided
runtimeruntime--runtime


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值