通俗易懂,Maven依赖pom中的scope详解
1. compile
默认就是compile,什么都不配置也就是意味着compile。compile表示被依赖项目需要参与当前项目的编译,当然后续的测试,运行周期也参与其中,是一个比较强的依赖。打包的时候通常需要包含进去。
2. test
scope为test表示依赖项目仅仅参与测试相关的工作,包括测试代码的编译,执行。比较典型的如junit。
3. runntime
runntime表示被依赖项目无需参与项目的编译,不过后期的测试和运行周期需要其参与。与compile相比,跳过编译而已,说实话在终端的项目(非开源,企业内部系统)中,和compile区别不是很大。比较常见的如JSR×××的实现,对应的API jar是compile的,具体实现是runtime的,compile只需要知道接口就足够了。oracle jdbc驱动架包就是一个很好的例子,一般scope为runntime。另外runntime的依赖通常和optional搭配使用,optional为true。我可以用A实现,也可以用B实现。
4. provided
provided意味着打包的时候可以不用包进去,别的设施(Web Container)会提供。事实上该依赖理论上可以参与编译,测试,运行等周期。相当于compile,但是在打包阶段做了exclude的动作。
5. system
从参与度来说,和provided相同,不过被依赖项不会从maven仓库抓,而是从本地文件系统拿,一定需要配合systemPath属性使用。
总结一下:默认就用compile,如果是测试工具junit这种可以用test,能够由外部容器提供的jar包,就可以使用provided,大部分都用默认
6. 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依赖pom中的scope详解相关推荐
- Maven依赖中的scope详解
Maven的一个哲学是惯例优于配置(Convention Over Configuration), Maven默认的依赖配置项中,scope的默认值是compile,项目中经常傻傻的分不清,直接默认了 ...
- mvn 默认scope_Maven依赖中的scope详解
Maven的一个哲学是惯例优于配置(Convention Over Configuration), Maven默认的依赖配置项中,scope的默认值是compile,项目中经常傻傻的分不清,直接默认了 ...
- SpringCloud_005_Maven中的Scope详解_准备01
技术交流qq群,交流起来方便一些:170933152 Maven的一个哲学是惯例优于配置(Convention Over Configuration), Maven默认的依赖配置项中,scope的默认 ...
- Maven配置文件POM属性最全详解
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/200 ...
- maven 的 pom 文件与打包详解
setting.xml 是全局级别的配置文件,主要用于配置 maven 的运行环境等一系列通用的属性. pom.xml 是项目级别的配置文件 . pom 作为项目对象模型.通过 xml 表示 mave ...
- java scope_spring中的scope详解
1)singleton (单一实例) 此取值时表明容器中创建时只存在一个实例,所有引用此bean都是单一实例.如同每个国家都有一个总统,国家的所有人共用此总统,而这个国家就是一个spring容器,总统 ...
- Maven 父pom中dependencyManagement版本优先级高于传递依赖版本
当使用了传递依赖,也就是使用了没有显示声明的依赖时,如果继承的<dependencyManagement/>中声明了使用的传递依赖的版本,那么最终使用的依赖是<dependencyM ...
- Pom.xml文件教程详解
原创整理不易,转载请注明出处:史上最全的maven pom.xml文件教程详解 代码下载地址:http://www.zuidaima.com/share/1781583829978112.htm ...
- maven 与intellij IDEA 下maven 为groovy 项目生成jar 详解
2019独角兽企业重金招聘Python工程师标准>>> W7下安装 maven与intellij IDEA 下maven为groovy项目生成jar详解(适合新手) 第一步:下载ma ...
最新文章
- Core Java 第三章 Java基本的程序设计结构
- mysql倍增表的内容_MySQL入门(7)——表数据的增、删、改
- 删除jar包中的指定文件
- DrawImage内存不足问题
- java see 方法_Java 反射常用方法
- springboot自动配置的原理_SpringBoot实战:详解SpringBoot自动配置原理
- 关于MYSQL ERROR1045 报错的解决办法
- 6.凤凰架构:构建可靠的大型分布式系统 --- 分布式共识
- AutoCAD2020线型比例修改
- 【电子书资源】数值方法最优化理论算法凸优化 ---书籍调研(附网盘下载地址)...
- JPBC库(基于配对的密码学)入门和避坑指南
- 新东方校长俞敏洪给我们的告诫。
- 游戏掉帧怎么办,刷新率方案
- 计算机毕业设计如何制作电子商务网站怎么制作购物网站计算机课程设计电子商城做什么(PHP-ASP.NET-c#-JavaWeb-SSM-SSH-J2EE-springBoot
- Windows安装最新版Pygame
- 手机进入Recovery之 RescueParty
- 电脑运行内存8g够用吗
- 学习linux第二十五天
- 牛客10道练习题2--练习记录
- 10条SKETCH的秘诀,为你提高工作的效率