您现在的位置是:主页 > news > 网站域名查询网址/临沂网站建设
网站域名查询网址/临沂网站建设
admin2025/6/24 11:28:45【news】
简介网站域名查询网址,临沂网站建设,网站上面的水印怎么做,在线做头像scope作用:决定 dependency 的jar的作用范围。即控制 Jar 包在哪些周期被加载和使用。 项目周期:编译、测试、打包、运行。 编译和运行也可分为:测试代码的编译和运行、非测试代码的编译和运行。一般情况下,编译和运行是指非测试…
scope作用:决定 dependency 的jar的作用范围。即控制 Jar 包在哪些周期被加载和使用。
项目周期:编译、测试、打包、运行。
编译和运行也可分为:测试代码的编译和运行、非测试代码的编译和运行。一般情况下,编译和运行是指非测试代码的编译和运行,测试是指测试代码的编译和运行。
打包:一般情况下,指的是mvn package且打包格式是war之类(附带依赖包的),非默认的jar。
scope取值:compile、test、runtime、provided、system、import。
scope默认值:compile。
compile
什么都不配置,默认值compile。
作用范围:编译、测试、打包、运行。
依赖传递:会传递到依赖的上层项目中。
test
作用范围:测试。
依赖传递:不会传递依赖。
runtime
作用范围:测试、打包、运行。
依赖传递:会传递。
provided
作用范围:编译、测试。
依赖传递:不会传递依赖。
provided意味着打包的时候不会包进去,在打包阶段做了exclude的动作,别的容器(Web Container)会提供。
system
不推荐使用。也provided类似,但是maven不会在repository查找,而是从本地文件系统拿,一定要配合systemPath属性使用。
import(Maven 2.0.9 之后新增)
import只使用在<dependencyManagement>中,表示从其它的pom中导入dependency的配置。用处:非继承的方式依赖多个模块。
继承引入依赖:<parent> 只能声明一个,Maven的继承和Java的继承一样,是无法实现多重继承的
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.4.6</version></parent>
非继承引入依赖:可引入多个模块依赖
<dependencyManagement><dependencies><dependency><groupId>com.yzh</groupId><artifactid>test-parent1</artifactId><version>1.0.0-SNAPSHOT</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>com.yzh</groupId><artifactid>test-parent2</artifactId><version>1.0.0-SNAPSHOT</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement>
依赖范围总结
scope的依赖传递
A–>B–>C。A依赖于B,B依赖于C。A和C的依赖关系:
当C的scope是test或者provided时,C直接被丢弃,A不依赖C;
否则A依赖C,C的scope继承自B的scope,即B的scope是什么,C在A中的scope就是什么。
一张依赖传递图(感觉直接依赖compile和间接依赖runtime的结果不太对):