Maven依赖传递、依赖传递排除、依赖冲突
2017-12-08 11:21
211 查看
一:Maven依赖传递
假如有Maven项目A,项目B依赖A,项目C依赖B。那么我们可以说 C依赖A。也就是说,依赖的关系为:C—>B—>A。
那么我们执行项目C时,会自动把B、A都下载导入到C项目的jar包文件夹中。
这就是依赖的传递性。
二:依赖传递的排除
如上,C—>B—>A。加入现在不想执行C时把A下载进来,那么我们可以用 <exclusions>标签。
三:依赖冲突与解决
依赖冲突:一个项目A,通过不同依赖传递路径依赖于X,若在不同路径下传递过来的X版本不同,那么A应该导入哪个版本的X包呢?
冲突解决方案:
1:如果依赖路径的长度不同,则“短路优先”:
A—>B—>C—>D—>E—>X(version 0.0.1)
A—>F—>X(version 0.0.2)
则A依赖于X(version 0.0.2)。
2:依赖路径长度相同情况下,则“先声明优先”:
A—>E—>X(version 0.0.1)
A—>F—>X(version 0.0.2)
则在项目A的<depencies></depencies>中,E、F那个在先则A依赖哪条路径的X。
假如有Maven项目A,项目B依赖A,项目C依赖B。那么我们可以说 C依赖A。也就是说,依赖的关系为:C—>B—>A。
那么我们执行项目C时,会自动把B、A都下载导入到C项目的jar包文件夹中。
这就是依赖的传递性。
二:依赖传递的排除
如上,C—>B—>A。加入现在不想执行C时把A下载进来,那么我们可以用 <exclusions>标签。
<dependencies> <dependency> <groupId>B</groupId> <artifactId>B</artifactId> <version>0.0.1</version> <exclusions> <exclusion> <!--被排除的依赖包坐标--> <groupId>A</groupId> <artifactId>A</artifactId> <version>0.0.1</version> </exclusion> </exclusions> </dependency> </dependencies>
三:依赖冲突与解决
依赖冲突:一个项目A,通过不同依赖传递路径依赖于X,若在不同路径下传递过来的X版本不同,那么A应该导入哪个版本的X包呢?
冲突解决方案:
1:如果依赖路径的长度不同,则“短路优先”:
A—>B—>C—>D—>E—>X(version 0.0.1)
A—>F—>X(version 0.0.2)
则A依赖于X(version 0.0.2)。
2:依赖路径长度相同情况下,则“先声明优先”:
A—>E—>X(version 0.0.1)
A—>F—>X(version 0.0.2)
则在项目A的<depencies></depencies>中,E、F那个在先则A依赖哪条路径的X。
相关文章推荐
- 一点一点学maven(07)——maven依赖(范围、传递、排除、冲突)
- maven依赖(范围、传递、排除、冲突)
- Maven依赖传递、依赖传递排除、依赖冲突
- Maven依赖排除 禁止依赖传递 取消依赖的方法
- Maven·依赖范围·传递依赖·依赖冲突
- Maven依赖排除、禁止依赖传递、取消依赖的方法
- Maven 依赖范围、依赖传递、排除依赖
- Maven依赖排除 禁止依赖传递 取消依赖的方法 去除jar包中的不想要的依赖关系
- Maven依赖排除 禁止依赖传递 取消依赖的方法
- 【Maven】依赖排除 禁止依赖传递 取消依赖的方法
- maven依赖传递和冲突解决
- Maven学习笔记---传递依赖冲突解决
- Maven依赖排除 禁止依赖传递 取消依赖的方法
- Maven学习总结(41)——Maven依赖范围、传递、排除详解
- Maven的依赖-硬依赖,传递依赖,依赖排除(NEW)
- Maven依赖排除 禁止依赖传递 取消依赖的方法
- 解决maven传递依赖中的版本冲突
- Maven传递依赖冲突解决(版本冲突)
- [置顶] Maven传递依赖冲突解决的三大种方式
- Maven 传递依赖冲突解决(了解)