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

scope的分类

compile

默认就是compile,什么都不配置也就是意味着compile。compile表示被依赖项目需要参与当前项目的编译,当然后续的测试,运行周期也参与其中,是一个比较强的依赖。打包的时候通常需要包含进去。

test

scope为test表示依赖项目仅仅参与测试相关的工作,包括测试代码的编译,执行。比较典型的如junit。

runntime

runntime表示被依赖项目无需参与项目的编译,不过后期的测试和运行周期需要其参与。与compile相比,跳过编译而已,说实话在终端的项目(非开源,企业内部系统)中,和compile区别不是很大。比较常见的如JSR×××的实现,对应的API jar是compile的,具体实现是runtime的,compile只需要知道接口就足够了。Oracle jdbc驱动架包就是一个很好的例子,一般scope为runntime。另外runntime的依赖通常和optional搭配使用,optional为true。我可以用A实现,也可以用B实现。

provided

provided意味着打包的时候可以不用包进去,别的设施(Web Container)会提供。事实上该依赖理论上可以参与编译,测试,运行等周期。相当于compile,但是在打包阶段做了exclude的动作。

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。

下面是一张nexus画的图。

Maven依赖中的scope详解相关推荐

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

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

  2. 通俗易懂,Maven依赖pom中的scope详解

    1. compile 默认就是compile,什么都不配置也就是意味着compile.compile表示被依赖项目需要参与当前项目的编译,当然后续的测试,运行周期也参与其中,是一个比较强的依赖.打包的 ...

  3. 关于maven依赖中的scope的作用和用法

    举例如下: <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-dependencies - ...

  4. SpringCloud_005_Maven中的Scope详解_准备01

    技术交流qq群,交流起来方便一些:170933152 Maven的一个哲学是惯例优于配置(Convention Over Configuration), Maven默认的依赖配置项中,scope的默认 ...

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

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

  6. java scope_spring中的scope详解

    1)singleton (单一实例) 此取值时表明容器中创建时只存在一个实例,所有引用此bean都是单一实例.如同每个国家都有一个总统,国家的所有人共用此总统,而这个国家就是一个spring容器,总统 ...

  7. Maven 依赖中 scope 详解

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

  8. Maven第3篇:详解maven解决依赖问题

    Maven第3篇:详解maven解决依赖问题 本文主要内容 感受一下maven的效果 maven约定配置 maven中pom文件 maven坐标详解 maven依赖导入功能 maven依赖范围详解 m ...

  9. Maven中pom文件详解

    在IDE中使用Maven IDE工具 MyEclipse 集成maven插件 Eclipse ​ Eclipse For Java EE IDEA 集成Maven插件 在IDE中 配置Maven 指定 ...

最新文章

  1. 清华计算机本科高中准备 知乎,什么是清华大学的定向生?清华大学定向生到底要不要报考?(知乎...
  2. Windows异常学习笔记(五)—— 未处理异常
  3. 揭秘阿里人工智能实验室首款智能音箱——天猫精灵X1
  4. php自动报价,使用PHP转换所有类型的智能报价
  5. LOJ#6360. 复燃「恋之埋火」(最小圆覆盖+高斯消元)
  6. 解决打开pdf时“在禁用UAC时,无法激活此应用”
  7. ViewPage使用(一)
  8. python复利计算_用Python计算基金定投收益代码
  9. android 美妆相机,Android类似美妆相机高级美妆列表
  10. [Vue]缓存路由组件 activated()与deactivated()
  11. 笔记本win10宽带共享wifi热点教程
  12. 手机浏览器显示word文档
  13. C# 客户端rar/zip文件解压缩
  14. 将QTextEdit右键菜单设置为中文
  15. 使用Python输出正金字塔
  16. Operand of null-aware operation ‘!‘ has type ‘SchedulerBinding‘ which excludes null.
  17. grep的语法和用法
  18. Pygame:动画精灵
  19. 荧光法焦磷酸检测试剂盒的制备和准备工作方案
  20. 搜狐新闻如何玩?张朝阳演讲透露玄机

热门文章

  1. C++Binomia distribution二项分布的实现算法(附完整源码)
  2. C++演示std :: sort(),std :: reverse()的函数(附完整源码)
  3. C++利用双哈希表实现存储机制hash table的算法(附完整源码)
  4. c++扔鸡蛋问题egg dropping puzzle(附完整源码)
  5. c++ 树的先序、中序和后序的非递归实现(附完整源码)
  6. usnews 计算机专业排名,2019美国大学USNews计算机专业排名
  7. Java导出数据到Excel
  8. 安装elasticsearch-analysis-ik中文分词器
  9. Disconf介绍,源码下载,环境准备,安装,disconf-web使用和配置介绍,项目中进行配置,项目案例运行
  10. SpringBoot的Thymeleaf支持,结合SpringMVC做的案例(学习SpringBoot实战)