Maven的依赖冲突是什么以及如何解决

一,前言

      我们在面试中经常遇见面试官提问:你能说一下依赖冲突吗?此时内心懵逼三秒,嗯嗯呃呃…这个我听过但具体是什么不太清楚,然后面试官露出一个意味深长的笑容;
      其实依赖冲突没有想象的那么复杂,听我下面给你说道说道,保证让你知晓什么是依赖冲突,如何解决,以及如何发现依赖冲突

二,依赖冲突

1,依赖冲突的概念
      我们创建了一个项目,项目中使用到了两个jar包,一个是A,一个是B,但是A和Bjar包同时依赖Cjar包,但是A依赖C的1.0版本,B依赖的是C的2.0版本,那么maven会将所有的jar包都会下载下来,但是在使用jar包的时候会根据最短路径原则来使用,那么就会造成只会使用其中1个C的jar包,或许只会使用C1.0,或许只会使用C1.1jar包,那么可能就会造成类找不到,或者方法找不到的问题发生,那么这就是依赖冲突以及依赖冲突会引起的问题;
2,解决办法
      a,解决思想:造成依赖冲突的原因是因为在项目中有两个c的jar包,并且版本不一样,那么只要使得项目中只有一个c的jar包就可以解决依赖冲突的问题了;
      b,举例:使用([ɪkˈskluːʒn]:排斥;排除在外;)标签,这个标签的作用就是在加载log4j jar包的时候,不加载该jar包所依赖的log4j-apijar包,那么这样就能保证项目中只有一个log4j-api的jar包;这样就解决了依赖冲突。

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.10.0</version>
    <exclusions>
        <exclusion>
        <artifactId>log4j-api</artifactId>
        <groupId>org.apache.logging.log4j</groupId>
        </exclusion>
    </exclusions>
</dependency>

3,如何发现依赖冲突
      使用Maven Helper插件,在插件安装好之后,我们打开pom.xml文件,在底部会多出一个Dependency Analyzer选项《Maven的依赖冲突是什么以及如何解决》
      点击 Dependency Analyzer,通过点击conflicts发现冲突,通过如下的方式在解决冲突;
《Maven的依赖冲突是什么以及如何解决》

    原文作者:张世林
    原文地址: https://blog.csdn.net/weixin_43251033/article/details/105595985
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞