0
点赞
收藏
分享

微信扫一扫

Java(85):Maven scope作用域介绍

E_topia 2022-03-18 阅读 78
javamaven

Maven scope作用域介绍

<scope></scope>


1、scope作用域介绍

Maven中,scope的默认值是compile。
scope元素的作用:控制 dependency(依赖)元素的使用范围。通俗的讲,就是控制 Jar 包在哪些范围被加载和使用。这个范围包括,编译、测试、运行,并且还可以加上是否被打入包中。


2、scope的作用域范围

scope的作用域范围包括compile、provided、runtime、test、system、import。

scope编译测试运行
compile
provided
runtime
test

依赖范围由强到弱的顺序是:compile>provided>runtime>test
其他两个用得不多。

3、scope依赖的详细说明

3.1、compile

范围:编译、测试、运行(部署)都有效 。
此范围为默认依赖范围,是一个比较强的依赖,适用于所有阶段。
这些dependencie(依赖)的jar,会传递到其他依赖的上层项目中。
由于运行时需要所以编译范围的依赖会被打包,会随着项目一起发布。

3.2、provided

范围:编译、测试有效。
provided依赖在编译和测试时需要,在运行时不需要。
正因为运行时无效,可以防止和tomcat下jar冲突,因为servlet api被tomcat容器提供,就不需要maven再重复引入。
由于运行时不需要所以provided范围依赖不会被打包。

3.3、 runtime

范围:测试、运行有效。
runtime依赖在运行和测试的时候需要,但在编译的时候不需要。与compile相比,被依赖项目无需参与项目的编译。
比如:jdbc的驱动包,项目主代码的编译只需要JDK提供的JDBC接口,只有在执行测试或者运行项目的时候才需要实现上述接口的具体JDBC驱动。
由于运行时需要所以runtime范围的依赖会被打包。

3.4、test

范围:仅测试有效
表示被依赖项目仅仅参与测试相关的工作,在编译和运行时都不需要,只在编译测试代码或者运行测试代码的时候才能使用该依赖。比较典型的如junit。
由于运行时不需要所以test范围依赖不会被打包。

举报

相关推荐

0 条评论