maven依赖冲突的解决方法原则

1.最短路径优先原则

1. A->B->H
2. C->D->E->H

如上依赖关系,1 依赖的H会生效。当然,直接依赖优先于传递依赖,如果传递依赖的jar包版本冲突了,可以自己声明一个指定版本的依赖jar。

2.第一声明优先原则

<dependencies>
...
<dependency>a-1.jar</dependency>
<dependency>a-2.jar</dependency>
</dependencies>

如上依赖引入顺序,a-1.jar优先。同一pom配置文件中,如果有两个名称相同版本不同的依赖声明,那么先写的会生效。

3.排除原则

<dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.11.4</version>
      <scope>provided</scope>
      <exclusions>
        <exclusion>
          <artifactId>jackson-annotations</artifactId>
          <groupId>com.fasterxml.jackson.core</groupId>
        </exclusion>
        <exclusion>
          <artifactId>jackson-core</artifactId>
          <groupId>com.fasterxml.jackson.core</groupId>
        </exclusion>
      </exclusions>
    </dependency>

传递依赖冲突时,可以在不需要的jar的传递依赖中声明排除。

4.版本锁定原则

   <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>2.11.4</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

在配置文件pom.xml中先声明要使用哪个版本的相应jar包,声明后其他版本的jar包一律不依赖。

posted @ 2022-12-09 16:49  雪山上的蒲公英  阅读(445)  评论(0)    收藏  举报
/* 返回顶部代码 */