• IDEA导入maven项目依赖包出现omitted for conflict with 2.11.7


    原因分析:

    出现版本冲突的原因是因为由于Maven具有依赖传递性,所以当你引入一个依赖类的同时,其身后的依赖类也一起如过江之鲫纷至沓来了。

    举个例子:
      A依赖于B及C,而B又依赖于X、Y,而C依赖于X、M,则A除引B及C的依赖包下,还会引入X,Y,M的依赖包(一般情况下了,Maven可通过<scope>等若干种方式控制传递依赖)。
      这里有一个需要特别注意的,即B和C同时依赖于X,假设B依赖于X的1.0版本,而C依赖于X的2.0版本,A究竟依赖于X的1.0还是2.0版本呢? 这就看Classloader的加载顺序了,假设Classloader先加载X_1.0,而它就不会再加载X_2.0了,如果A恰恰希望使用X_2.0呢,血案就这样不期而遇了。就会出现了“omitted for conflict with…”依赖版本冲突的问题。
    ————————————————

    解决方法:
    解决依赖版本冲突的方法其实很简单,将不想要或低版本的传递依赖去除掉即可。
    比如我这个项目的maven依赖中错误如图中显示的已经很明确了,同时存在两个不同版本的依赖类“org.scala-lang:scala-library:2.11.4”与“org.scala-lang:scala-library:2.11.7”,由依赖关系可以看出,二者都是由依赖“org.apache.kafka_2.11:0.9.0.1”引入的,那么我们pom.xml文件中找到这个依赖,加入如下配置项代码,将低版本的传递依赖包去除掉就ok了。
    ————————————————

    <dependency>
            <groupId>org.codehaus.xfire</groupId>
            <artifactId>xfire-all</artifactId>
            <version>1.2.6</version>
            <!-- 去除版本不一致的传递依赖包 -->
            <exclusions>
                <exclusion>
                    <groupId>javax.activation</groupId>
                    <artifactId>activation</artifactId>
                    <version>1.0.2</version>
                </exclusion>
            </exclusions>
        </dependency>
    ————————————————
    去除掉后刷新maven即可。。。。。

  • 相关阅读:
    poj 1007:DNA Sorting(水题,字符串逆序数排序)
    蓝桥杯北京之旅【第二篇·2014.5.31】
    poj 1006:Biorhythms(水题,经典题,中国剩余定理)
    蓝桥杯北京之旅【第一篇·2014.5.30】
    【2014年6月份日常记录表(2014.6.1—6.30,30天)】
    poj 1002:487-3279(水题,提高题 / hash)
    ThreadPoolExecutor机制探索-我们到底能走多远系列(41)
    ibatis批量操作补充
    Maven管理 划分模块
    顺序队列实现任务以此执行-任务调度系列2
  • 原文地址:https://www.cnblogs.com/zkaiw/p/12671701.html
Copyright © 2020-2023  润新知