• Maven依赖冲突的解决方式


    Maven依赖冲突的解决方式

    在这里插入图片描述

    对Maven概念还不了解的可以看看我的这篇文章: https://blog.csdn.net/pjh88/article/details/108520721

    在讲依赖冲突之前我们先来讲讲什么是依赖传递

    在maven中依赖是可以传递的,比如我们有A,B,C三个项目,其中A依赖B,B依赖C,由递推可知A依赖C

    在这里插入图片描述

    举例

    比如我们在web项目中导入spring-webmvc的jar包,即我们的项目依赖了spring-webmvc,其实spring-webmvc还依赖其他jar包,比如sping-aop、spring-beans,所以我们的web项目也间接依赖了sping-aop、spring-beans

    在这里插入图片描述

    什么是依赖冲突

    这是由于依赖传递现象的存在

    比如spring-webmvc 依赖 spirng-beans-4.2.4,而spring-aop 依赖 spring-beans-5.0.2,但是发现 spirng-beans-4.2.4 加入到了工程中,而我们希望 spring-beans-5.0.2 加入工程。这就造成了依赖冲突。

    在这里插入图片描述

    在我们的开发中我们当然啦不允许这种情况的出现,我们要使用什么版本,他就必须使用什么版本

    在这里插入图片描述

    解决方案

    1. 使用maven提供的依赖调解原则
      第一声明者优先原则
      路径近者优先原则
    2. 排除依赖
    3. 锁定版本

    1. 使用maven提供的依赖调解原则

    第一声明者优先原则

    在 pom 文件中定义依赖,以先声明的依赖为准。其实就是根据坐标导入的顺序来确定最终使用哪个传递过来的依赖。

    在这里插入图片描述

    通过上图可以看到,spring-aop和spring-webmvc都传递过来了spring-beans,但是因为spring-aop在前面,所以最终使用的spring-beans是由spring-aop传递过来的,而spring-webmvc传递过来的spring-beans则被忽略了

    路径近者优先原则

    在 pom 文件定义依赖,以路径近者为准。
    还是上述情况,spring-aop 和 spring-webmvc 都会传递过来 spirng-beans,那如果直接把 spring-beans 的依赖直接写到 pom 文件中,那么项目就不会再使用其他依赖传递来的 spring-beans,因为自己直接在 pom 中定义 spring-beans要比其他依赖传递过来的路径要近

    排除依赖

    可以使用exclusions标签将传递过来的依赖排除出去

    没有使用的时候
    在这里插入图片描述使用之后

    在这里插入图片描述

    通过上图可以看到,spring-webmvc传递过来的4.2.4版本的spring-beans已经被排除出去了,项目中使用的为spring-aop传递过来的5.0.2版本的spring-beans。

    版本锁定

    使用dependencyManagement标签锁定依赖的版本

    注意dependencyManagement中指定的仅仅是对应jar包的版本,并不会把指定的jar导入到项目中,要导入对应的jar包还是要使用dependencies标签
    在这里插入图片描述
    在使用dependence标签的时候不需要再指定版本号了

    在这里插入图片描述
    在这里插入图片描述

    以上就是Maven依赖冲突的解决方式,如有帮助还请点赞关注支持,如有疑问评论私信都可,看到后可帮助解答本博客主要侧重于数据结构于算法和java开发,操作系统,计算机网络,觉得我的文章有帮助的小伙伴可以关注我,有疑问可评论私信,相逢即是缘,大家高处见

    在这里插入图片描述

  • 相关阅读:
    必备java参考资源列表
    java中使用js函数
    6.游戏特别离不开脚本(3)-JS脚本操作java(2)(直接解析JS公式,并非完整JS文件或者函数)
    6.游戏特别离不开脚本(3)-JS脚本操作java(直接解析JS公式,并非完整JS文件或者函数)
    6.游戏特别离不开脚本(2)-获取脚本引擎
    6.游戏特别离不开脚本(1)-原因
    5.eclipse 自带的jdk没有源码,改了它
    4.调个绿豆沙护眼色
    3.myeclipse 8.5 m1 注册码
    Zxing中文乱码的简单解决办法
  • 原文地址:https://www.cnblogs.com/pjhaymy/p/13961725.html
Copyright © 2020-2023  润新知