Maven jar包冲突的解决方案

 更新时间:2020年04月17日 11:05:41   作者:经典鸡翅  
这篇文章主要介绍了Maven jar包冲突的解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

现象

创建一个maven工程,引入spring-context包。

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

此时看左侧的lib,我们发现引入了一个坐标,多出了很多的jar包,这个现象叫做依赖传递,就是说,当前坐标所依赖的jar包也会一同引入进来,这里的版本都是5.0.8的。


接下来,我们再引入一个springmvc。我们换一个版本,我们引入4.2.4版本

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

我们通过idea给的maven分析图可以看出,mvc和context都依赖与sprng-core一个,依赖的是5.0.8版本,一个依赖的是4.2.4版本。


那么真正加载的是哪个版本呢。是5.0.8版本。


此时就是存在了jar包的冲突问题,那么我们解决这个问题,有三种方式。

声明优先原则

此时我们的pom文件中是先声明的5.0.8版本,后声明的4.2.4版本,我们将其调换顺序。



此时我们发现他们共同依赖的jar包,都变成了4.2.4版本,这就是声明优先原则。

就近优先原则

比如,我们不想调换顺序,我们就是想使用4.2.4版本的spring-core。我们可以单独引入进来


此时再看,我们发现依赖的spring-core已经变成了4.2.4版本了。


这个就是就近优先原则,就近优先是直接依赖,直接依赖的优先级大于传递依赖的优先级。

排除依赖

这种方式我们可以直接排除spring-context中的spring-core的传递依赖。


再看依赖,此时已经改为4.2.4.


使用exclusions标签的时候,其内部不用写版本号,这是唯一不用写版本号的一种情况。因为他默认就去找当前依赖的版本了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Java对Excel表格的上传和下载处理方法

    Java对Excel表格的上传和下载处理方法

    这篇文章主要介绍了Java对Excel表格的上传和下载处理方法,需要的朋友可以参考下
    2017-08-08
  • java JVM方法分派模型静态分派动态分派全面讲解

    java JVM方法分派模型静态分派动态分派全面讲解

    这篇文章主要为大家介绍了java JVM方法分派模型静态分派动态分派全面讲解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Intellij IDEA如何查看所有断点

    Intellij IDEA如何查看所有断点

    这篇文章主要介绍了Intellij IDEA如何查看所有断点问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • java中给实体对象属性的空值赋默认值

    java中给实体对象属性的空值赋默认值

    这篇文章主要介绍了java中给实体对象属性的空值赋默认值,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Java中内存分配的几种方法

    Java中内存分配的几种方法

    本文主要介绍Java中几种分配内存的方法。我们会看到如何使用sun.misc.Unsafe来统一操作任意类型的内存。以前用C语言开发的同学通常都希望能在Java中通过较底层的接口来操作内存,他们一定会对本文中要讲的内容感兴趣
    2014-03-03
  • Eclipse新建web项目流程图解

    Eclipse新建web项目流程图解

    这篇文章主要介绍了Eclipse新建web项目流程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • Java开发之spring security实现基于MongoDB的认证功能

    Java开发之spring security实现基于MongoDB的认证功能

    这篇文章主要介绍了Java开发之spring security实现基于MongoDB的认证功能,结合实例形式分析了spring security在非JDBC环境下的自定义认证服务实现技巧,需要的朋友可以参考下
    2017-11-11
  • java实现幸运抽奖系统

    java实现幸运抽奖系统

    这篇文章主要为大家详细介绍了java实现幸运抽奖系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-07-07
  • 超全面的SpringBoot面试题含答案

    超全面的SpringBoot面试题含答案

    这篇文章主要收录了44道面试中经常被问的SpringBoot问题,不管你是正在求职的新手还是已经工作很久的高手,这篇关于SpringBoot的面试题总结一定会让你有新的理解,让我们一起来看看吧
    2023-03-03
  • Java web过滤器验证登录防止未登录进入界面

    Java web过滤器验证登录防止未登录进入界面

    这篇文章主要介绍了Java web过滤器验证登录防止未登录进入界面,在一些系统中经常可以用到此功能,对java web 验证登录知识感兴趣的朋友一起看下吧
    2016-08-08

最新评论