scope用于指定当前包的依赖范围和依赖传递性
scope取值
compile 编译
默认。
编译、运行、测试都有效。
provided 已提供
JDK或容器提供才使用。
编译、测试有效。
runtime 运行时
运行和测试有效。
test 测试
测试编译和测试运行阶段有效。
system 系统
类似provided,显示指定本地系统的jar文件路径。
编译、测试有效,运行时无效。
import 导入
用在<dependencyManagement>
中的类型依赖项上。
依赖传递
scope | 有效范围 | 依赖传递 | 例 |
---|---|---|---|
compile | all | 是 | spring-core |
provided | compile, test | 否 | servlet-api |
runtime | runtime, test | 是 | JDBC驱动 |
test | test | 否 | JUnit |
system | compile, test | 是 |
例:
A -> B -> C
当前项目A,A依赖B,B依赖C。
已知B在A项目中的scope,问C在A中的scope是什么?
答案:
当C是test或provided时,被丢弃,A不依赖C。
否则A依赖C,C的scope继承自B的scope。