15Maven - 依赖冲突的解决

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_20042935/article/details/89204859

依赖冲突的产生

如果添加两个依赖,如下图:
在这里插入图片描述
会发现这两个jar包同时都依赖了Spring-beans
在这里插入图片描述
希望spring-beans-4.2.4加入工程,发现spring-beans-3.0.5也加入到了工程,这就造成了依赖冲突了。

依赖调节原则

mave 自动按照下边的原则调解:

第一声明优先原则

在pom文件定义依赖,先声明的为准

测试:
如果将上边的struts-spring-plugins和sping-context顺序颠倒,系统将导入spring-beans-4.2.4。

分析:
由于spring-context 在前边以spring-context依赖的spring-beans-4.2.4为准,所以最终spring-beans-4.2.4添加到了工程中。

路径近者优先原则

例如:A依赖spring-beans-4.2.4,A依赖B依赖spring-beans-3.0.5,则spring-beans-4.2.4优先被依赖在A中,因为spring-beans-4.2.4相对于spring-beans-3.0.5被A依赖的路径最近。

测试:
在本工程的pom中加入spring-beans-4.2.4的依赖,根据路径有限原则,系统将导入spring-beans-4.2.4:
在这里插入图片描述

排除依赖

上边的问题可以通过排除依赖方法辅助调解,如下:

比如在依赖struts2-spring-plugin的设置中添加了排除依赖,排除spring-beans,下边的配置表示:依赖struts2-spring-plugin,但排除struts2-spring-plugin所依赖的spring-beans。
在这里插入图片描述

锁定版本(企业开发中常用方法)

版本锁定后不考虑声明的顺序或依赖的路径,如下:
在这里插入图片描述
注意:在工程中锁定依赖的版本并不代表在工程中添加了依赖,如果工程中需要添加锁定版本的依赖则需要单独添加< dependencies></ dependencies>标签,如下:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_20042935/article/details/89204859
今日推荐