关于maven依赖中的scope的作用和用法
举例如下:
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-dependencies -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.1.4.RELEASE</version><type>pom</type><scope>provided</scope>
</dependency>
scope的值有以下几种可能,进行分情况讲解:
1. compile
默认就是compile,什么都不配置也就是意味着compile。compile表示被依赖项目需要参与当前项目的编译,当然后续的测试,运行周期也参与其中,是一个比较强的依赖。打包的时候通常需要包含进去。默认的scope,在部署的时候将会打包到lib目录下,项目在编译,测试,运行阶段都需要
2. test
scope为test表示依赖项目仅仅参与测试相关的工作,在编译和运行环境下都不会被使用,更别说打包了。
3. runntime
runntime这个scope,仅仅适用于运行环境,在编译和测试环境下都不会被使用
4. provided
provided适合在编译和测试的环境,他和compile很接近,但是provide仅仅需要在编译和测试阶段,同样provide将不会被打包到lib目录下。
5. system
从参与度来说,也provided相同,不过被依赖项不会从maven仓库抓,而是从本地文件系统拿,一定需要配合systemPath属性使用。
scope的依赖传递
A–>B–>C。当前项目为A,A依赖于B,B依赖于C。知道B在A项目中的scope,那么怎么知道C在A中的scope呢?答案是:
当C是test或者provided时,C直接被丢弃,A不依赖C;
否则A依赖C,C的scope继承于B的scope。
为什么需要区分这些scope
可以用来限制dependency的范围可以在不同的环境下打包不同的jar包,比如junit测试类的jar包不需要在编译运行的时候,就可以设置scope为test。
最后还有一个true是什么意思,怎么用的呢?
org.springframework.boot
spring-boot-devtools
true
例如上面的例子,在SpringBoot官网文件中你可以得到解释就是,true的话,其他项目依赖此项目也不会进行传递,只能本项目使用。
此文参考了很多博客的见解以及个人所在官网看到的综合性讲解。感谢各位博主!
关于maven依赖中的scope的作用和用法相关推荐
- lt;scopegt;providedlt;/scopegt; 关于maven依赖中的scope的作用和用法
举例如下: <dependency> <groupId>org.springframework.boot</groupId> ...
- Maven依赖中的scope详解
Maven的一个哲学是惯例优于配置(Convention Over Configuration), Maven默认的依赖配置项中,scope的默认值是compile,项目中经常傻傻的分不清,直接默认了 ...
- Maven 依赖中 scope 详解
前言 Maven 的哲学思想是,约定优于配置(Convention Over Configuration),Maven 依赖中 scope 的默认值是compile Scope 指定了依赖(第三方ja ...
- C#中using关键字的作用及其用法(转)
C#中using关键字的作用及其用法 using的用途和使用技巧. using关键字微软MSDN上解释总共有三种用途: 1.引用命名空间. 2.为命名空间或类型创建别名. ...
- mvn 默认scope_Maven依赖中的scope详解
Maven的一个哲学是惯例优于配置(Convention Over Configuration), Maven默认的依赖配置项中,scope的默认值是compile,项目中经常傻傻的分不清,直接默认了 ...
- maven仓库中_remote.repositories的作用
首先直接给结论:_remote.repositories的作用是当maven本地仓库缓存了jar/pom的情况下修改了maven的配置文件(settings.xml)后依然会去远程仓库获取. 以org ...
- Maven依赖中groupId和artifactId的区别
这两个是坐标 为了保证项目的唯一性.想要在一个大项目中找到一个小项目 就必须要根据这两个坐标进行查找. groupId一般是 domain+compnay_name: org.Apache artif ...
- 、简述global关键字的作用_在C#编程中global关键字的作用及其用法
在C#编程中,global 是 C# 2.0 中新增的关键字,理论上说,如果代码写得好的话,根本不需要用到它.今天就为大家展示下global关键字的作用及其用法,希望对大家学习C#编程有所帮助. 假设 ...
- 关于maven依赖中的scopeprovided/scope使用
今天开发web的时候,需要用到servlet-api,于是在pom.xml中添加依赖 <dependency><groupId>javax.servlet</groupI ...
最新文章
- VS2019生成C++开发的exe文件可以在无VS的PC上运行的方法
- 【Spring】BeanFactory解析bean详解
- c mysql 设置字符集_C语言如何查看和修改MySQL使用的字符集
- 全国首家工资总额负面清单管理试点企业获批
- How to post a Java object to http end point which accepts json string
- 日文邮件变成乱码解决方案
- 后 5G 时代,路在何方?
- python如何打印txt文件_在Python中的.txt文件中打印特定行?
- 红海竞争下,「社交+」在中东泛娱乐 App 市场的出海新机遇
- 在虚拟机中ping了停不下来怎么办?
- matlab改变直方图数量级,histogram equalization-MATLAB
- 本地用户和组 无法访问计算机 远程过程调用失败,如何解决远程过程调用失败?怎样使用向日葵远程控制?...
- Oralce ERP中AP模块Vender银行信息查询语句
- 可控硅整流电路中的波形系数
- 文件夹的隐藏选项为灰色勾选,无法更改或删除
- OpenJDK8维护暂停?272迟迟不发布
- 使用scrapy +selenium爬取动态渲染的页面
- 淘晶驰串口屏_ 控件事件详解
- kiscore sys丢失_Win7旗舰版64位上提示无法正常运行金蝶专业版的解决方法
- 【信号与系统】—知识点:自由响应、强迫响应、暂态响应、稳态响应、零输入响应、零状态响应如何区分!
热门文章
- 数组对象的过滤(取出一项中的某些字段)
- 暑假攻略:怎样让孩子过一个充实又省钱的假期
- Codeforces686C【dfs】
- [转载] 大型网站的 HTTPS 实践(一)—— HTTPS 协议和原理
- Delphi面向对象学习随笔一:类与对象的关系
- [Node.js] mySQL数据库 -- 英雄管理系统(完善)
- 夯实基础,彻底掌握js的核心技术(四):ES5、ES6对象方法详解
- PocketSphinx语音识别系统的编译、安装和使用
- Modularity(模块化-CMD规范)
- 7-31 字符串循环左移 (20 分)