You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Maven clean install时的日志依赖冲突错误?

解决方案:解决log4j-slf4j-impl与log4j-to-slf4j冲突问题

这两个依赖本质上互斥:

  • log4j-slf4j-impl 负责将SLF4J API的日志请求转发给Log4j 2处理
  • log4j-to-slf4j 负责将Log4j 2自身的日志请求转发给SLF4J实现
    二者同时存在会触发循环依赖,直接导致初始化异常。

步骤1:定位冲突依赖的来源

执行Maven命令生成依赖树,精准找到引入冲突jar的第三方依赖:

mvn dependency:tree -Dverbose -Dincludes=org.apache.logging.log4j

在输出结果中找到同时出现log4j-slf4j-impl和log4j-to-slf4j的条目,标记它们的父依赖。

步骤2:排除冲突依赖

根据步骤1的结果,在pom.xml中给对应的父依赖添加排除规则,保留你实际需要的桥接依赖:

  • 若使用SLF4J API + Log4j 2实现:排除log4j-to-slf4j
    <dependency>
        <!-- 替换为实际引入log4j-to-slf4j的父依赖,例如spring-boot-starter-logging -->
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-logging</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-to-slf4j</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    
  • 若使用Log4j 2 API + SLF4J实现:排除log4j-slf4j-impl
    <dependency>
        <!-- 替换为实际引入log4j-slf4j-impl的父依赖 -->
        <groupId>xxx</groupId>
        <artifactId>xxx</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-slf4j-impl</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    

步骤3:验证依赖树

再次执行mvn dependency:tree,确认log4j-slf4j-impl和log4j-to-slf4j不同时出现在依赖列表中。

步骤4:重新构建

执行mvn clean install,此时SLF4J绑定冲突应已解决,测试可正常执行。

补充:单独运行测试无异常是因为IDE类路径可能自动过滤了冲突依赖,但Maven构建严格遵循pom.xml配置,因此冲突会在构建阶段暴露。

内容的提问来源于stack exchange,提问作者Jeet_dev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 22:57:13