博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Maven依赖范围及传递
阅读量:5901 次
发布时间:2019-06-19

本文共 922 字,大约阅读时间需要 3 分钟。

、Maven因为执行一系列编译、测试和部署运行等操作,在不同的操作下使用的classpath不同,依赖范围就是用来控制依赖与三种 classpath(编译classpath、测试classpath、运行classpath)的关系。

Maven有以下几种依赖范围:

compile:编译依赖范围(默认),使用此依赖范围对于编译、测试、运行三种 classpath 都有效,即在编译、测试和运行的时候都要使用该依赖jar包;

test:测试依赖范围,从字面意思就可以知道此依赖范围只能用于测试classpath,而在编译和运行项目时无法使用此类依赖,典型的是JUnit,它只用于编译测试代码和运行测试代码的时候才需要;

provided:此依赖范围,对于编译和测试classpath有效,而对运行时无效;

runtime:运行时依赖范围,对于测试和运行classpath有效,但是在编译主代码时无效,典型的就是JDBC驱动实现;

system:系统依赖范围,使用system范围的依赖时必须通过systemPath元素显示地指定依赖文件的路径,不依赖Maven仓库解析,所以可能会造成建构的不可移植,谨慎使用。

eg:

 

[html] 
 
  1. <span style="font-family:Microsoft YaHei;">    <dependencies>  
  2.         <dependency>  
  3.             <groupId>javax.sql</groupId>  
  4.             <artifactId>jdbc-stdext</artifactId>  
  5.             <version>2.0</version>  
  6.             <scope>system</scope>  
  7.             <systemPath>${java.home}/lib/rt.jar</systemPath>  
  8.         </dependency>  
  9.     <dependencies></span>  

import:导入依赖范围。

2、依赖范围不仅可以控制与三种classpath的关系,还对传递性依赖产生影响,依赖关系图如下:

版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://www.cnblogs.com/ganbo/p/4934644.html

你可能感兴趣的文章
ReactNative常用组件汇总
查看>>
nested exception is java.lang.NoClassDefFoundError: net/sf/cglib/proxy/CallbackFilter
查看>>
“正在注册字体”问题解决
查看>>
windows10 更新后要输入2次密码才能进入系统
查看>>
iOS开发-OpenGL ES入门教程1
查看>>
平衡二叉树(AVL树)
查看>>
面向对象思想(第一天)
查看>>
微信小程序 js逻辑
查看>>
linux 安装 sftp
查看>>
openStack queens
查看>>
(转)EOSIO开发(四)- nodeos、keosd与cleos
查看>>
MVC5+EF6 入门完整教程八
查看>>
Java 设计模式专栏
查看>>
常用Mysql或者PostGresql或者Greenplum的语句总结。
查看>>
工控随笔_12_西门子_WinCC的VBS脚本_03_变量类型
查看>>
appium 报错
查看>>
phpquery中文手册
查看>>
微信nickname乱码(emoji)及mysql编码格式设置(utf8mb4)解决的过程
查看>>
【转】C++ 笔试面试题目
查看>>
同步和异步的区别
查看>>