maven中scope依赖范围与classpath的关系

时间:2021-07-08 18:46:57

依赖范围(Scope)

对于编译有效

对于测试有效

对于运行有效

例子

备注

compile

Y

Y

Y

spring-core

在编译,测试,运行时spring-core的jar都要加入到classpath中

test

-

Y

-

Junit

只在测试阶段junit的jar要加入到classpath中

provided

Y

Y

-

servlet-api

只在编译,测试中要加入servlet-api的jar,但运行时,容器会提供这个jar,所以运行期不要加入

runtime

-

Y

Y

jdbc驱动

在编译时,只需要 sun提供的jdbc接口即可,在测试和运行期则要这个驱动.

system

Y

Y

-

本地的,Maven仓库之外的类库文件

与provided依赖范围一样。但使用system范围的依赖必须通过systemPath元素显式指定依赖文件的路径。因为这个依赖不是由Maven仓库解析的,而且都与本机系统绑定,可能造成构建不可移植,慎用.