举例如下:

<!-- 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的作用和用法相关推荐

  1. lt;scopegt;providedlt;/scopegt; 关于maven依赖中的scope的作用和用法

    举例如下: <dependency>             <groupId>org.springframework.boot</groupId>        ...

  2. Maven依赖中的scope详解

    Maven的一个哲学是惯例优于配置(Convention Over Configuration), Maven默认的依赖配置项中,scope的默认值是compile,项目中经常傻傻的分不清,直接默认了 ...

  3. Maven 依赖中 scope 详解

    前言 Maven 的哲学思想是,约定优于配置(Convention Over Configuration),Maven 依赖中 scope 的默认值是compile Scope 指定了依赖(第三方ja ...

  4. C#中using关键字的作用及其用法(转)

    C#中using关键字的作用及其用法 using的用途和使用技巧.     using关键字微软MSDN上解释总共有三种用途:     1.引用命名空间.     2.为命名空间或类型创建别名.    ...

  5. mvn 默认scope_Maven依赖中的scope详解

    Maven的一个哲学是惯例优于配置(Convention Over Configuration), Maven默认的依赖配置项中,scope的默认值是compile,项目中经常傻傻的分不清,直接默认了 ...

  6. maven仓库中_remote.repositories的作用

    首先直接给结论:_remote.repositories的作用是当maven本地仓库缓存了jar/pom的情况下修改了maven的配置文件(settings.xml)后依然会去远程仓库获取. 以org ...

  7. Maven依赖中groupId和artifactId的区别

    这两个是坐标 为了保证项目的唯一性.想要在一个大项目中找到一个小项目 就必须要根据这两个坐标进行查找. groupId一般是 domain+compnay_name: org.Apache artif ...

  8. 、简述global关键字的作用_在C#编程中global关键字的作用及其用法

    在C#编程中,global 是 C# 2.0 中新增的关键字,理论上说,如果代码写得好的话,根本不需要用到它.今天就为大家展示下global关键字的作用及其用法,希望对大家学习C#编程有所帮助. 假设 ...

  9. 关于maven依赖中的scopeprovided/scope使用

    今天开发web的时候,需要用到servlet-api,于是在pom.xml中添加依赖 <dependency><groupId>javax.servlet</groupI ...

最新文章

  1. VS2019生成C++开发的exe文件可以在无VS的PC上运行的方法
  2. 【Spring】BeanFactory解析bean详解
  3. c mysql 设置字符集_C语言如何查看和修改MySQL使用的字符集
  4. 全国首家工资总额负面清单管理试点企业获批
  5. How to post a Java object to http end point which accepts json string
  6. 日文邮件变成乱码解决方案
  7. 后 5G 时代,路在何方?
  8. python如何打印txt文件_在Python中的.txt文件中打印特定行?
  9. 红海竞争下,「社交+」在中东泛娱乐 App 市场的出海新机遇
  10. 在虚拟机中ping了停不下来怎么办?
  11. matlab改变直方图数量级,histogram equalization-MATLAB
  12. 本地用户和组 无法访问计算机 远程过程调用失败,如何解决远程过程调用失败?怎样使用向日葵远程控制?...
  13. Oralce ERP中AP模块Vender银行信息查询语句
  14. 可控硅整流电路中的波形系数
  15. 文件夹的隐藏选项为灰色勾选,无法更改或删除
  16. OpenJDK8维护暂停?272迟迟不发布
  17. 使用scrapy +selenium爬取动态渲染的页面
  18. 淘晶驰串口屏_ 控件事件详解
  19. kiscore sys丢失_Win7旗舰版64位上提示无法正常运行金蝶专业版的解决方法
  20. 【信号与系统】—知识点:自由响应、强迫响应、暂态响应、稳态响应、零输入响应、零状态响应如何区分!

热门文章

  1. 数组对象的过滤(取出一项中的某些字段)
  2. 暑假攻略:怎样让孩子过一个充实又省钱的假期
  3. Codeforces686C【dfs】
  4. [转载] 大型网站的 HTTPS 实践(一)—— HTTPS 协议和原理
  5. Delphi面向对象学习随笔一:类与对象的关系
  6. [Node.js] mySQL数据库 -- 英雄管理系统(完善)
  7. 夯实基础,彻底掌握js的核心技术(四):ES5、ES6对象方法详解
  8. PocketSphinx语音识别系统的编译、安装和使用
  9. Modularity(模块化-CMD规范)
  10. 7-31 字符串循环左移 (20 分)