首页 > 其他分享 >Maven 依赖冲突以及排除(二)

Maven 依赖冲突以及排除(二)

时间:2023-12-29 15:13:42浏览次数:43  
标签:5.0 core 依赖 spring springframework Maven 冲突 org

1、依赖冲突:

当服务启动或者调用发生如下异常时,NoSuchMethodError,ClassNotFoundException 等。则一般是因为jar包冲突引起的。

大多数依赖冲突,maven的传递依赖会引入很多隐式的依赖,依赖的版本和实际使用的版本不一致导致的。

2、依赖的原则:

原则一:最短路径优先
最短路径优先: 当依赖声明不在同一个POM文件中时,或者说存在依赖传递时,路径最短的jar包将被选为最终依赖。
原则二:第一声明者优先
第一声明者优先: 当依赖声明不在同一个POM文件中时,或者说存在依赖传递时,并且依赖传递长度相同时,最先声明的依赖将被选为最终依赖。
原则三:覆盖优先
覆盖优先: 当依赖声明在同一个POM文件中时,后面声明的依赖将覆盖前面声明的依赖。

(1)路径最短优先原则

<dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-context</artifactId>
   <version>4.2.4.RELEASE</version>
 </dependency>

 <dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-core</artifactId>
   <version>5.0.2.RELEASE</version>
 </dependency>
这里可以看出5.0.2取代了4.2.4,这就是我们所说的路劲最短者优先,因为context的依赖虽然会自动导入core包,但是那就是属于下级依赖了,
而5.0.2这个依赖和context这个依赖为同级,所以最终会取这个版本。

 (2)路径相同时先声明者优先

先统一版本号,然后把两个依赖顺序颠倒一下,会发现core包相关包都会是5.0.2版本
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>

 

3、依赖冲突解决

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.2.RELEASE</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</exclusion>
</exclusions>
</dependency>

 

标签:5.0,core,依赖,spring,springframework,Maven,冲突,org
From: https://www.cnblogs.com/wongzzh/p/17934903.html

相关文章

  • Maven 基础认识以及坐标认识(一)
    1、Maven是Apache软件基金会组织维护的一款自动化构建工具,专注服务于Java平台的项目【构建】和【依赖管理】构建的几个环节:①清理:删除以前的编译结果,为重新编译做好准备。②编译:将Java源程序编译为字节码文件。③测试:针对项目中的关键点进行测试,确保项目在迭代开发过......
  • 【Flink系列二十一】深入理解 JVM的类型加载约束,解决 Flink 类型加载冲突问题的通用方
    classByteArrayDeserializerisnotaninstanceoforg.apache.kafka.common.serialization.DeserializerDebuggingClassloading类似的XcannotbecasttoXexceptions如何理解这类异常?这类异常可以归纳为类型异常,按个人有限经验,现象分为两种常见情况:类型赋值检查:不能......
  • Maven的pom标签含义详解
    Maven的pom标签含义详解parent标签<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/maven-v4_0_0.xsd......
  • Maven插件系列之spring-boot-maven-plugin
    SpringBoot的Maven插件(SpringBootMavenplugin)能够以Maven的方式为应用提供SpringBoot的支持,即为SpringBoot应用提供了执行Maven操作的可能。SpringBootMavenplugin能够将SpringBoot应用打包为可执行的jar或war文件,然后以通常的方式运行SpringBoot应用。SpringBootMave......
  • 如何解决使用融云音视频时由于库冲突导致编译不通过的问题
    音视频库里面使用了一些第三方库,比如openssl,libopencore-amrnb等第三方库,如果集成的过程中遇到冲突可以尝试这样修改:1、在BuildSettings中OtherLinkerFlags中把-all_load去掉;2、如果遇到openssl库冲突无法解决,请工单联系我们单独提供不包含openssl库的音视频引擎库......
  • 【SpringBoot零基础入门到项目实战②】安装Java和Maven,创建你的第一个项目
    文章目录导言安装JavaWindows系统macOS系统Linux系统安装和配置MavenWindows系统macOS系统Linux系统配置Maven本地仓库使用阿里镜像加速创建第一个SpringBoot项目拓展学习(提前了解后面会讲到)1.深入理解SpringBoot的项目结构2.学习SpringBoot的自动配置3.掌握SpringBoot......
  • Spring IoC(控制反转)、DI(依赖注入)
    1.IoCIoC(InversionofControl,控制反转)面向对象的一种设计思想,很多语言的框架都使用了IoC这个设计思想,并非特属于Spring,其实现为将实例对象交给第三方容器管理,创建实例对象的时候,注入这些实例对象所依赖的实例对象,而不是在内部创建。所谓的内部创建如下所示,连接数据库的DateSour......
  • 在IDEA使用Git_解决冲突
    手动解决冲突手动修改最终版本最后提交代码......
  • webpack概念(依赖图、target、manifest)
    依赖图(dependencygraph)依赖的东西可以是代码,也可以是非代码(images和web字体) 从 入口 开始,webpack会递归的构建一个 依赖关系图,这个依赖图包含着应用程序中所需的每个模块,然后将所有模块打包为少量的 bundle ——通常只有一个——可由浏览器加载。对于 HTTP/2 来......
  • go依赖的版本管理
    在Go语言的项目中,要将依赖升级到最新版本,你可以使用goget命令。以下是一些常用的步骤和命令:更新单个依赖到最新版本:goget-upackage-name这里package-name是你想要更新的依赖包名。这个命令会将指定的依赖更新到最新版本。更新所有依赖到最新版本:goget-u./........