Skip to main content

July 2019

Maven中的包路径依赖的问题

Submitted by taotao on Mon, 07/22/2019 - 12:10

概述

最近在项目中碰到了Jar包冲突的问题,比如一个组件A依赖了组件B的1.0版本,组件C依赖了组件B的2.0版本,我们如果是使用Maven进行依赖管理的时候,Maven会根据一些策略来舍弃掉组件B的某一个版本。下面我总结了Maven的一些依赖冲突的时的处理策略。 

 最短路径原则

比如上面提到的场景,组件A和组件C对组件B的路径分别为:

A(1.0) ---> X(1.0) ---> B(1.0) 
C(1.0) ---> B (2.0) 

那么Maven会计算出哪个是最短的依赖路径,就会优先加载,这个例子中,会加载组件B的2.0版本。

最先声明原则

如果组件B的1.0和2.0版本依赖的路径相同,此时怎么办?比如下面的依赖路径:

A (1.0) ---> B (1.0)  
C (1.0) ---> B (2.0) 

 在这个场景中,Maven会分析出哪个组件是最先被声明的,比如下面的声明方式:

Tags