Maven项目依赖包冲突的解决方法

在一个Maven项目中,使用commons-logging做log4j日志的记录,但是突然有一天发现,spring框架可以通过log4j将日志记录在日志文件中,而代码输出的所有日志都没有了,仔细检查,发现,代码中使用的
是org.apache.commons.logging.LogFactory类进行记录日志的操作,定位org.apache.commons.logging.LogFactory类,发现系统中找到三个包都有这个类(路径完全一样),分别是:
commons-logging-1.2.jar,spring-jcl-5.0.2.RELEASE.jar, 和jcl-over-slf4j.jar, 显然包冲突了,系统不知道调用哪个类,所以就没有记录日志,jcl-over-slf4j不知道是从哪里引用的,在项目下
执行maven命令:mvn dependency:tree,显示结果如下:
    [INFO] +- org.ansj:ansj_seg:jar:sources:5.1.5:compile
    [INFO] +- org.apache.solr:solr-solrj:jar:7.2.1:compile
    [INFO] |  +- commons-io:commons-io:jar:2.5:compile
    [INFO] |  +- org.apache.commons:commons-math3:jar:3.6.1:compile
    [INFO] |  +- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
    [INFO] |  +- org.apache.httpcomponents:httpcore:jar:4.4.6:compile
    [INFO] |  +- org.apache.httpcomponents:httpmime:jar:4.5.3:compile
    [INFO] |  +- org.apache.zookeeper:zookeeper:jar:3.4.10:compile
    [INFO] |  +- org.codehaus.woodstox:stax2-api:jar:3.1.4:compile
    [INFO] |  +- org.codehaus.woodstox:woodstox-core-asl:jar:4.4.1:compile
    [INFO] |  +- org.noggit:noggit:jar:0.8:compile
    [INFO] |  +- org.slf4j:jcl-over-slf4j:jar:1.7.7:compile
    [INFO] |  \- org.slf4j:slf4j-api:jar:1.7.7:compile
    [INFO] \- org.postgresql:postgresql:jar:42.2.2:compile

显然,jcl-over-slf4j是被solr包依赖的,一次项目开发中,引入了solr包,自此,就不能记录日志了。
系统是不需要jcl-over-slf4j包的,所以,需要去除jcl-over-slf4j包,调整pom.xml文件如下:
    <dependency>
          <groupId>org.apache.solr</groupId>
          <artifactId>solr-solrj</artifactId>
          <!-- 去掉对jcl-over-slf4j的依赖,防止记录日志工程类包冲突 -->
           <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>jcl-over-slf4j</artifactId>
                </exclusion>
            </exclusions>  
        </dependency>
通过exclusions标签,把jcl-over-slf4j包去掉,重新构建,运行项目,日志出来了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大柳树伯爵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值