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版本

  • 相关阅读:
    SCILAB
    定积分的scilab程序
    4月26日科目一练习(96分)
    4月27日1科目一练习(90分)
    4月27日科目一练习(93分)
    4月12日科目一练习(91分)
    测试学习网站
    HttpWatch工具简介及使用技巧(转)
    Linux系统资源分析
    LoadRunner监控Linux服务器
  • 原文地址:https://www.cnblogs.com/liuyang-520/p/12394022.html
Copyright © 2011-2022 走看看