Maven学习笔记(四)——Maven的依赖管理
来源:互联网 发布:软件界面修改工具 编辑:程序博客网 时间:2024/05/20 14:23
依赖范围
依赖范围scope用来控制依赖和编译,测试,运行的classpath的关系。主要的是三种。依赖关系如下:
1.compile:默认编译依赖范围。对于编译,测试,运行三种classpath都有效;
2.test:测试依赖范围。只对于测试classpath有效
3.provided:已提供依赖范围。对于编译,测试的classpath都有效,但对于运行无效。
4.runtime:运行时提供。eg:jdbc驱动。
依赖传递
依赖冲突
在Maven中存在两种冲突方式,一种是跨pom文件的冲突,另一种是同一个pom文件的冲突。
跨pom文件的冲突
依赖的就近使用原则。比如:C直接依赖B,间接依赖A,而A和B中有相同但版本不同的jar包,那么C会选择B中的依赖。
同一个pom文件的冲突
因为配置文件是从上到下加载的,所以如果有两个相同但不同版本的jar包,则下面的会覆盖上面的。
比如在一个Maven工程的pom.xml中有两个依赖:
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.9</version></dependency><dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version></dependency>
那么该Maven工程会依赖版本为3.8.1的jar包。
可选依赖
Optional标签表示该依赖是否可选,默认为false。如果为true,则该依赖不会传递下去,如果为false,则会传递下去。
比如:C依赖B,B依赖A,在B的pom.xml中对A的依赖下加上<optional>true<optional>
标签,则C的Maven依赖中就不会把A的资源加载进来,只加载B的资源就可以。
排除依赖
exclusion标签可以排除依赖。
<dependencies> <dependency> <groupId>com.zrxjuly.maven</groupId> <artifactId>MavenCreate</artifactId> <version>0.0.1-SNAPSHOT</version> <!-- 排除依赖,在maven工程中不引入下面的依赖 --> <exclusions> <exclusion> <groupId>com.zrxjuly.test</groupId> <artifactId>HelloMaven</artifactId> </exclusion> </exclusions> </dependency> </dependencies>
阅读全文
0 0
- Maven学习笔记(四)——Maven的依赖管理
- Maven学习笔记(四)——Maven的依赖管理
- maven教程(四):maven依赖管理
- Maven学习笔记(四)---maven依赖关系中Scope的作用
- Maven学习笔记(四):坐标与依赖
- maven 笔记-依赖管理
- maven学习笔记(五) maven的依赖
- 不错的maven学习笔记,收藏——Maven学习 (四) 使用Nexus搭建Maven私服
- 学习笔记——Maven实战(四)基于Maven的持续集成实践
- Maven学习笔记(三)——坐标和依赖
- Maven的依赖管理
- Maven的依赖管理
- maven的依赖管理
- Maven笔记四——坐标和依赖
- Maven学习笔记(四)-复杂的多项目管理
- Maven学习总结(二)——Maven依赖
- maven学习笔记(二) 依赖
- Maven学习笔记(坐标和依赖)
- Paul Graham:梦寐以求的编程语言
- open, read, write/fopen,fread,fwrite区别
- 想不显示织梦栏目列表页缩略图就是不显示默认缩略图怎么办
- C# windows服务:C#windows服务中的Timer控件的使用
- Linux操作系统下的多线程编程详细解析----条件变量
- Maven学习笔记(四)——Maven的依赖管理
- 压力测试下的java内存回收优化
- 变速齿轮,游戏加速的实现
- JAVA初级:面向对象
- Canvas 入门4 鼠标事件综合应用 橡皮筋选取框
- 如何修改{dede:list}、flag标签让织梦支持权重排序功能
- ORA-04031的解决办法
- Hadoop 伪分布式配置
- shape详解