Maven依赖及范围
一、依赖范围(scope):
共5种,compile (编译)、test (测试)、runtime (运行时)、provided、system
compile:编译依赖范围,在编译,测试,运行时都需要。依赖范围默认为compile.
test: 测试依赖范围,测试时需要。编译和运行不需要。如Junit
runtime: 运行时依赖范围,测试和运行时需要。编译不需要。如JDBC驱动包
provided:已提供依赖范围,测试和编译时需要。运行时不需要。如servlet-api
system:系统依赖范围。依赖不在maven仓库的资源。
二、依赖的传递:
A->B(compile) 第一关系: a依赖b compile
B->C(compile) 第二关系: b依赖c compile
当在A中配置
<dependency>
<groupId>com.B</groupId>
<artifactId>B</artifactId>
<version>1.0</version>
</dependency>
则会自动导入c包。
三、依赖冲突的调节:
A->B->C->X(1.0)
A->D->X(2.0)
由于只能引入一个版本的包,此时Maven按照最短路径选择导入x(2.0)
A->B->X(1.0)
A->D->X(2.0)
路径长度一致,则优先选择第一个,此时导入x(1.0)
四、排除依赖:
A->B->C(1.0)
此时在A项目中,不想使用C(1.0),而使用C(2.0)
则需要使用exclusion排除B对C(1.0)的依赖。并在A中引入C(2.0).
pom.xml中配置
<!--排除B对C的依赖-->
<dependency>
<groupId>B</groupId>
<artifactId>B</artifactId>
<version>0.1</version>
<exclusions>
<exclusion>
<groupId>C</groupId>
<artifactId>C</artifactId><!--无需指定要排除项目的版本号-->
</exclusion>
</exclusions>
</dependency>
<!---在A中引入C(2.0)-->
<dependency>
<groupId>C</groupId>
<artifactId>C</artifactId>
<version>2.0</version>
</dependency>
转http://www.cnblogs.com/beenupper/p/3344208.html
Maven依赖及范围的更多相关文章
- Maven依赖版本冲突的分析及解决小结
1:前言 做软件开发这几年遇到了许多的问题,也总结了一些问题的解决之道,之后慢慢的再遇到的都是一些重复性的问题了,当然,还有一些自己没有完全弄明白的问题.如果做的事情是重复的,遇到重复性问题的概率也就 ...
- 解决maven依赖传递中的版本冲突问题
通常情况下,我们都比较喜欢使用maven进行项目管理,要加个依赖包也非常简单,不需要到处去下载jar包,当然除了maven之外,也还有一些非常不错的工具.在使用maven进行项目依赖管理的时候,有时候 ...
- 160929、各数据库连接配置与maven依赖安装
最近做的项目都是maven的,据说maven是个东西.把依赖的jar文件的事情都委托出去辣!试着用了一下哈,效果还可以! 今天做了数据库配置这一块,特意把相关的东西总结出来,以备不时之需. MySQL ...
- Maven依赖(转)
相同依赖级别,先加入的先依赖不同依赖级别,级别短的先依赖 version-->SNAPSHOTxxx-里程碑-->SNAPSHOT,alpha,beta,Release(RC),GA()s ...
- maven依赖的全局排除
今天遇到要全局排除一个maven依赖,因为Maven本身没有全局排除依赖的办法, 参考了同事人英写的一篇博文(可以看这里http://my.oschina.net/liuyongpo/blog/177 ...
- maven依赖传递关系
一.maven 依赖传递规则 举个例子,比如A依赖B,B依赖C,那么A也是依赖C的.A是对B的直接依赖,A对C是传递依赖 ①.最短路劲原则 如,路劲一:A依赖B,B依赖C,C依赖D(1.0.0): 路 ...
- Spring Security 3.2.x与Spring 4.0.x的Maven依赖管理
原文链接: Spring Security with Maven原文日期: 2013年04月24日翻译日期: 2014年06月29日翻译人员: 铁锚 1. 概述 本文通过实例为您介绍怎样使用 Mave ...
- Maven依赖解析
本文将记录Maven工程中依赖解析机制,内容包括: Maven依赖基本结构 从仓库解析依赖的机制 依赖传递性解析实例 1. Maven依赖基本结构 上篇文章记录了Maven依赖的聚合与继承,POM中依 ...
- Maven依赖分析
背景 昨天帮一位同事排查了一个依赖冲突的问题.问题的现象就是在IntelliJ IDEA运行项目正常,但是打包(Maven assembly jar)之后传到服务器运行失败,报错:Caused by: ...
- Java开发小技巧(二):自定义Maven依赖
前言 我们在项目开发中经常会将一些通用的类.方法等内容进行打包,打造成我们自己的开发工具包,作为各个项目的依赖来使用. 一般的做法是将项目导出成Jar包,然后在其它项目中将其导入,看起来很轻松,但是存 ...
随机推荐
- 在KVM里装个pfSense
第一步:安装配置 virsh destroy router-wan1- virsh undefine router-wan1- qemu-img create -f qcow2 -o size=8G ...
- Lepus监控之安装部署
PHP和Python都是跨平台的语言,所以理论上系统应该可以支持在不同的平台上运行.但是由于时间和精力以及资源有限,目前天兔系统只测试完善了Centos/RedHat系统的支持.我们目前提供的技术支持 ...
- HTML/CSS基础知识(三)
浏览器内核 浏览器内核是浏览器的核心,也称“渲染引擎”,用来解释网页语法并渲染到网页上.浏览器内核决定了浏览器该如何显示网页内容以及页面的格式信息.不同的浏览器内核对网页的语法解释也不同,因此网页开发 ...
- centos关闭邮件提醒
解决:you have mail in /var/spool/mail/root 提示 echo "unset MAILCHECK">> /etc/profile; ...
- python中赋值,深拷贝,浅拷贝区别
这三种 的区别就是 复制的变量 是否是原变量的引用. 赋值:只是原变量的引用. 浅拷贝和深拷贝的区别 需要通过 子元素 区分 浅拷贝:子元素的 引用相同 深拷贝:所以引用都不相同,完全复制一份 这三种 ...
- node-gyp和node-pre-gyp笔记
node-gyp大家都不陌生,先不做赘述. node-pre-gyp,install命令可以将存在网络上的作者根据不同平台预编译好的二进制文件下载下来 因为项目需要,博主需要本地编译,而不是去网上下载 ...
- 图灵一代接入V1
现在官方没有一代接入了,但是还是可用,留个方法 $.ajax({ type:"post", url:"http://www.tuling123.com/openapi/a ...
- java使用poi生成导出Excel(新)
导出样式: java代码: import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStre ...
- 计算macd与ma技术指标
MACD部分 转载自云金杞:https://blog.csdn.net/qq_26948675/article/details/72636590 数据获取于聚宽平台 import pandas as ...
- 十、Strategy 策略模式
需求:使用不同的算法解决相同的问题 设计原理: 代码清单: 接口 Strategy public interface Strategy { public abstract Hand nextHand( ...