zoukankan      html  css  js  c++  java
  • 解决jar包冲突问题

    1、引入问题

    1.1、导入jar包时maven会自动将该jar包所依赖的jar包也一起导入进来,比如spring-context依赖spring-beans、spring-beans依赖spring-core,在导入spring-context时会同时自动导入spring-beans、spring-core

    1.1.1、maven依赖

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

    1.1.2、导入的jar包

    1.2、我想引入spring-beans的其它版本,但是不想引入spring-context自动导入的spring-beans版本,该怎样做?

    1.3、我想引入spring-core的其它版本,但是不想引入spring-context或者spring-beans自动导入的spring-core版本,该怎样做?

    2、解决jar包冲突的方法

    2.1、第一声明优先

    2.1.1、maven依赖和导入的jar包

      <dependencies>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-beans</artifactId>
          <version>4.3.26.RELEASE</version>
        </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.0.2.RELEASE</version>
      </dependency>
      </dependencies>

    总结:spring-beans写在spring-context前面,那么spring-beans所依赖的jar包优先于spring-context所依赖的jar包,所以,spring-core是4.3.26.RELEASE版本

    2.1.2、maven依赖和导入的jar包

        <dependencies>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>5.0.2.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-beans</artifactId>
                <version>4.3.26.RELEASE</version>
            </dependency>
        </dependencies>

    总结:spring-context写在spring-beans前面,则优先使用spring-context依赖的spring-core的版本,所以这里spring-core的版本是5.0.2.RELEASE

    2.2、路径近者优先

    2.2.1、maven依赖和导入的jar包

        <dependencies>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>5.0.2.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-beans</artifactId>
                <version>4.3.26.RELEASE</version>
            </dependency>
        </dependencies>

    总结:虽然spring-context依赖spring-beans,且spring-context写在spring-beans 4.3.26.RELEASE前面,但是spring-beans 4.3.26.RELEASE的路径优先于spring-context所依赖的spring-beans,所以这里spring-beans的版本是4.3.26.RELEASE。根据第一声明优先规则,这里spring-core的版本是5.0.2.RELEASE

    2.3、直接排除法

    2.3.1、maven和导入的jar包

        <dependencies>
            <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>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-beans</artifactId>
                <version>4.3.26.RELEASE</version>
            </dependency>
        </dependencies>

    总结:spring-context在spring-beans 4.3.26.RELEASE前面,原则上会优先导入spring-context依赖的spring-core版本,但是这里使用exclusions排除了spring-context中的spring-core,所以这里导入的还是spring-beans 4.3.26.RELEASE中依赖的spring-core版本

  • 相关阅读:
    python-MongoDB 非关系型数据库
    python-爬虫-Beautifulsoup模块
    python-flask-路由匹配源码分析
    python-flask-配置文件的源码分析
    python-爬虫-selenium模块
    python-flask-请求源码流程
    python-爬虫
    iOS开发——创建你自己的Framework
    手把手教你封装下载管理器
    AFNetwork 作用和用法详解
  • 原文地址:https://www.cnblogs.com/liuyang-520/p/12394022.html
Copyright © 2011-2022 走看看