Maven scope 作用域
一、相关描述
1、maven scope 有好几种,不过一般是使用默认——不写(默认就是 compile)
2、maven:约定大于配置
二、scope分类
scope 类型:compile, runtime, test, system, provided, import
阶段范围:编译,运行,测试
1、compile
默认值,作用于所有阶段。
编译,测试,运行都有效。
2、test:
仅测试有效
一个示例:有一个包,叫 spring-boot-starter-test, scope 是设置了 test, 但代码里面用了里面的类,这个类就死活找不到。
那要怎样才算是。。。test 呢? 只有 test 包下面的才能用?: 是的。如果加了 <scope>test</scope> ,那么这个包的作用域,就只在 test 包下有作用的。
所以,不建议在 Java 包下使用 <scope>test</scope> 的类(当然,其实也编译不通过)——应该说,一些明确是用于测试的包下的类,就不要用在业务代码里面了,不要混用。
3、provided
编译,测试有效。运行不需要
比如 servlet-api, 引入了这个包,但在运行的时候,放到 tomcat 容器下,tomcat 也自带了 servlet-api, 这个时候,就得把 servlet-api 设置为 provided 了。
4、runtime
在运行的时候用????
不编译,不打包。