概述
一般来说有两种原则:最短路径原则
和优先声明原则
;实际上还有一种:多次直引不同版本的jar优先使用最后声明的版本
。
1、最短路径原则
A -> B -> C -> D(V1)
E -> F -> D(V2)
如上项目中就出现了两个版本的D,此时maven会采用最短路径原则,选择V2版本的D,因为V1版本的D是由 A包 间接依赖的,整个依赖路径长度为3,而V2版本的D是由 E包 间接依赖的,整个依赖路径长度为2。
2、优先声明原则
A -> B -> C(V1)
D -> E -> C(V2)
如果两个jar包版本路径深度相同,则使用优先声明的版本(V1);
3、多次直引不同版本的jar优先使用最后声明的版本
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>7.9.3</version>
</dependency>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>5.6.9</version>
</dependency>
如果在pom文件中,同时引用了如上两个版本,则会使用5.6.9版本;
解决措施:版本管理
在最上层项目的pom中使用dependencyManagement标签进行依赖管理:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>5.6.9</version> <!--指定版本号-->
</dependency>
</dependencies>
</dependencyManagement>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。