Maven 依赖包的Scope属性设置
整理下Maven
依赖包作用范围Scope
属性值,默认值是compile
。
Scope四个属性值
依赖项中的Scope
元素用于引用当前任务的类路径(编译和运行时,测试等)以及如何限制依赖项的传递性。
有五个范围可用:
- compile - 这是默认范围,如果未指定则使用。所有类路径中都提供了编译依赖项。此外,这些依赖项将传播到依赖项目。
- provided - 这很像编译,但表示您希望JDK或容器在运行时提供它。它仅在编译和测试类路径中可用,并且不可传递。
- runtime - 此范围指示编译不需要依赖项,但是用于执行。它位于运行时和测试类路径中,但不是编译类路径。
- test - 此范围表示正常使用应用程序不需要依赖关系,并且仅适用于测试编译和执行阶段。它不是传递性的。
- system - 此范围与提供的类似,只是您必须提供明确包含它的JAR。工件始终可用,不会在存储库中查找。
compile
默认值,对编译范围有效(所有范围),在编译和打包时都会将依赖打包进去。provided
在编译和测试的过程有效,最后打成war
包时不会加入,认为目标容器已提供该jar
包。如:servlet-api
。runtime
在运行的时候依赖,在编译的时候不依赖。test
在测试时使用,在编译和打包时都不会加入这个依赖,如:junit
。
使用示例
1 | <dependency> |
Maven 依赖包的Scope属性设置