• Maven依赖冲突


    依赖冲突

    依赖冲突是指项目依赖的某一个jar包,有多个不同的版本,因而造成类包版本冲突

    依赖传递

    项目依赖了A,A依赖了B,项目自动依赖了B

    注意:父项目中的依赖有 标签属性为   test  provided  则不会依赖传递

    依赖冲突的原因

    依赖冲突很经常是类包之间的间接依赖引起的,每个显式声明的类包都会依赖于一些其它的隐式类包,这些隐式的类包会被maven间接引入进来,从而造成类包冲突

    如何解决依赖冲突

    一般maven会自动通过第一声明者优先就近原则解决冲突

    如果不行,首先查看产生依赖冲突的类jar,其次找出我们不想要的依赖类jar,可以手动排除,锁定版本等

    一.查看依赖冲突

    1.安装Maven Helper插件

    • Conflicts(查看冲突)
    • All Dependencies as List(列表形式查看所有依赖)
    • All Dependencies as Tree(树形式查看所有依赖)

     2.命令行 mvn -Dverbose dependency:tree

    二.解决冲突

    1.第一声明者优先原则

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

    2.就近原则

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

    3.排除依赖

    1. <dependency>
    2. <groupId>org.apache.strutsgroupId>
    3. <artifactId>struts2-spring-pluginartifactId>
    4. <version>2.3.24version>
    5. <exclusions>
    6. <exclusion>
    7. <groupId>org.springframeworkgroupId>
    8. <artifactId>spring-beansartifactId>
    9. exclusion>
    10. exclusions>
    11. dependency>

    4.锁定版本 通过dependencyManagement锁定库的版本

    1. <dependencyManagement>
    2. <dependencies>
    3. <dependency>
    4. <groupId>org.springframeworkgroupId>
    5. <artifactId>spring-jdbcartifactId>
    6. <version>5.2.5.RELEASEversion>
    7. dependency>
    8. dependencies>
    9. dependencyManagement>
    10. <dependencies>
    11. <dependency>
    12. <groupId>org.springframeworkgroupId>
    13. <artifactId>spring-jdbcartifactId>
    14. dependency>
    15. dependencies>

    5.提取版本号 统一版本号解决

    1. <properties>
    2. <mybatisplus.version>2.1.3mybatisplus.version>
    3. properties>
    4. <dependencies>
    5. <dependency>
    6. <groupId>com.baomidougroupId>
    7. <artifactId>mybatis-plusartifactId>
    8. <version>${mybatisplus.version}version>
    9. dependency>
    10. dependencies>

  • 相关阅读:
    面试官:聊聊分布式事务,再说说解决方案!
    SSL OV证书和DV、EV证书的区别
    MAC地址、IP地址以及ARP协议
    2023亚太杯数学建模思路 - 案例:异常检测
    安卓手机获取root权限---修补面具root步骤解析
    modelize.ai - 小记
    SpringCloud入门简述
    Rasa 3.x 学习系列-Rasa X 社区版(免费版) 更改
    第八篇章——垃圾回收器
    [JMeter]Beanshell解析Json格式的接口响应数据
  • 原文地址:https://blog.csdn.net/Aoutlaw/article/details/125893253