Maven依赖范围及传递
2015-12-13 09:55
239 查看
本文转自:http://blog.csdn.net/stypace/article/details/38440545
1、Maven因为执行一系列编译、测试和部署运行等操作,在不同的操作下使用的classpath不同,依赖范围就是用来控制依赖与三种 classpath(编译classpath、测试classpath、运行classpath)的关系。
Maven有以下几种依赖范围:
compile:编译依赖范围(默认),使用此依赖范围对于编译、测试、运行三种 classpath 都有效,即在编译、测试和运行的时候都要使用该依赖jar包;
test:测试依赖范围,从字面意思就可以知道此依赖范围只能用于测试classpath,而在编译和运行项目时无法使用此类依赖,典型的是JUnit,它只用于编译测试代码和运行测试代码的时候才需要;
provided:此依赖范围,对于编译和测试classpath有效,而对运行时无效;
runtime:运行时依赖范围,对于测试和运行classpath有效,但是在编译主代码时无效,典型的就是JDBC驱动实现;
system:系统依赖范围,使用system范围的依赖时必须通过systemPath元素显示地指定依赖文件的路径,不依赖Maven仓库解析,所以可能会造成建构的不可移植,谨慎使用。
eg:
[html] view
plaincopy
![](https://code.csdn.net/assets/CODE_ico.png)
![](https://code.csdn.net/assets/ico_fork.svg)
<span style="font-family:Microsoft YaHei;"> <dependencies>
<dependency>
<groupId>javax.sql</groupId>
<artifactId>jdbc-stdext</artifactId>
<version>2.0</version>
<scope>system</scope>
<systemPath>${java.home}/lib/rt.jar</systemPath>
</dependency>
<dependencies></span>
import:导入依赖范围。
2、依赖范围不仅可以控制与三种classpath的关系,还对传递性依赖产生影响,依赖关系图如下:
1、Maven因为执行一系列编译、测试和部署运行等操作,在不同的操作下使用的classpath不同,依赖范围就是用来控制依赖与三种 classpath(编译classpath、测试classpath、运行classpath)的关系。
Maven有以下几种依赖范围:
compile:编译依赖范围(默认),使用此依赖范围对于编译、测试、运行三种 classpath 都有效,即在编译、测试和运行的时候都要使用该依赖jar包;
test:测试依赖范围,从字面意思就可以知道此依赖范围只能用于测试classpath,而在编译和运行项目时无法使用此类依赖,典型的是JUnit,它只用于编译测试代码和运行测试代码的时候才需要;
provided:此依赖范围,对于编译和测试classpath有效,而对运行时无效;
runtime:运行时依赖范围,对于测试和运行classpath有效,但是在编译主代码时无效,典型的就是JDBC驱动实现;
system:系统依赖范围,使用system范围的依赖时必须通过systemPath元素显示地指定依赖文件的路径,不依赖Maven仓库解析,所以可能会造成建构的不可移植,谨慎使用。
eg:
[html] view
plaincopy
![](https://code.csdn.net/assets/CODE_ico.png)
<span style="font-family:Microsoft YaHei;"> <dependencies>
<dependency>
<groupId>javax.sql</groupId>
<artifactId>jdbc-stdext</artifactId>
<version>2.0</version>
<scope>system</scope>
<systemPath>${java.home}/lib/rt.jar</systemPath>
</dependency>
<dependencies></span>
import:导入依赖范围。
2、依赖范围不仅可以控制与三种classpath的关系,还对传递性依赖产生影响,依赖关系图如下:
相关文章推荐
- 为什么 properties.load()方法不支持reader?
- PyQt中QFileDialog记录上次打开目录(历史目录)的方法
- php验证码类
- Trunk基本配置
- php日期类
- Ubuntu 组态 Tomcat而每天的错误解决
- java抛出异常是怎么回事?
- 多线程批量探测目标IP段的服务器类型(内网也可用)
- 网站框架选择
- iOS下数据库的简单理解
- ubuntu下查看无线网卡是否支持AP模式
- Codevs_P1282 约瑟夫问题(线段树)
- 【生活】 90年前后出生的人现状如何?
- memcache安装
- 武汉大学2013linux大作业
- 练习打字
- STM32的LED灯实验
- 书写新CPP的好习惯(VC&gcc)
- 书写新CPP的好习惯(VC&gcc)
- IOS id用法