maven的依赖范围主要作用在三种情况,分别是编译、运行和测试,这里我给大家详细解释一下,这三种到底是什么?因为有些人会产生一些其他的误解
编译对应的是当你编译的类继承了第三方jar包中的类,或者是通过其他形式使用第三方jar,那么此jar依赖就需要范围控制在编译及以上在可以正常编译,因为编译时会将使用到的资源编译到class文件中
测试这项功能相当基础,我们一般不用,即使是我们打包时,我们也会选择跳过测试,测试这一功能就是简单的测试一下程序是否联通,但是测试这一项功能,有的时候常常弄巧成拙,会导致我们需要的业务代码,无法编译成功,所以正常情况下,我们不会用到测试
运行指的是你运行这个jar文件,但是对于运行新手会产生一个误解,因为直接编译maven工程不加任何插件的时候,第三方jar包不会进入编译好的jar包中,所以导致运行的时候,如果运行环境下没有对应的jar包会运行失败,时候就有很多新手会郁闷,自己某些jar包明明依赖范围是在运行时,但是为什么还会失败?这里我要解释一下,这里的运行指的是maven默认你在运行环境下已经有了这样的资源,所以不会另外为你编译第三方jar包
下面是所有的可以依赖范围
compile:编译依赖范围,指此jar只用来编译,用的相当少,比如用在编译器的tools文件上
test: 测试依赖范围。
provided:已提供依赖范围。一旦标注运行时,会直接用运行环境的,而不是maven的
runtime:运行时依赖范围。只参与运行的jar
system:系统依赖范围。其实这个依赖和provided作用完全一样,不同的是system依赖需要指定路径
import:导入依赖范围。这个依赖基本不用
下面给大家找了一个图,希望能帮到大家