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

在运行的时候用????

不编译,不打包。

 

posted @ 2022-02-24 12:22  aaacarrot  阅读(220)  评论(0编辑  收藏  举报