码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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>

  • 相关阅读:
    “华为杯”研究生数学建模竞赛2019年-【华为杯】D题:基于改进 K-means 聚类和隐马尔可夫链的汽车行驶工况构建(附获奖论文和MATLAB代码实现)
    uniapp 如何发送formData数据请求(全网最佳解决方案)
    【微信小程序毕业设计源代码】最近开发的60个java+python微信小程序源码+毕业设计选题推荐
    LeetCode_贪心算法_简单_409.最长回文串
    Webpack
    Learn Prompt-提供示例
    第二十章 控制进程(一)
    Spring学习笔记3 Spring对IOC的实现
    汽车EDI:波森Boysen EDI项目案例
    Kubernetes概念详解之:subPath字段的使用原理及案例分析
  • 原文地址:https://blog.csdn.net/Aoutlaw/article/details/125893253
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号