美文网首页
maven依赖调解

maven依赖调解

作者: zcliu | 来源:发表于2017-11-08 21:22 被阅读0次

项目有以下依赖:

<dependency>
    <groupId>com.vips.components</groupId>
    <artifactId>vips-common-cache</artifactId>
    <version>2.0</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.9</version>
</dependency>

其中

vips-common-cache ---> vip-common-util ---> commons-codec(1.6)

poi ---> commons-codec(1.5)

使用 mvn dependency:tree 分析依赖后,发现maven实际使用的是 poi下的commons-codec(1.5)

image

再来看以下情形:

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.4.1</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.9</version>
</dependency>

httpclient ---> commons-codec(1.9)

poi ---> commons-codec(1.5)

分析依赖后发现,maven选择了commons-codec(1.9)

image

结论:

maven遇到依赖冲突后,主要两种原则解决:

1.路径优先原则:如第一个例子,

vips-common-cache ---> vip-common-util ---> commons-codec(1.6)

poi ---> commons-codec(1.5)

commons-codec(1.6)路径深度是3, commons-codec(1.5)是2,所以maven选择较短路径的那个

2.声明优先原则:如第二个例子,当冲突依赖所处的路径相同,声明在前的会被引用

相关文章

网友评论

      本文标题:maven依赖调解

      本文链接:https://www.haomeiwen.com/subject/yhcumxtx.html