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

如何阻止Maven下载已排除且未显示在dependency:tree的log4j 1.2.14?

解决Log4j 1.2.14仍被自动下载的问题

先找准问题根源

首先得明确到底是哪个环节在引入这个老版本依赖:

  • 执行mvn dependency:tree -Dverbose -Dincludes=log4j:log4j,只过滤显示log4j相关依赖,排查是否有遗漏的间接引用没被排除。
  • 如果上面的命令没结果,就检查Maven插件的依赖——dependency:tree默认只显示项目业务依赖,不包含插件依赖,执行mvn dependency:tree -Dscope=plugin,看看测试、打包这类插件是不是自带了老版本log4j。

针对性解决方法

1. 排除其他业务依赖中的log4j

如果排查到是其他业务依赖间接引入,直接给对应依赖添加排除规则:

<dependency>
    <groupId>目标依赖的groupId</groupId>
    <artifactId>目标依赖的artifactId</artifactId>
    <exclusions>
        <exclusion>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
        </exclusion>
    </exclusions>
</dependency>

2. 处理插件依赖的老版本log4j

如果是Maven插件(比如maven-surefire-plugin)引入的,就在插件配置里添加排除或强制指定新版本依赖:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>你的插件版本</version>
            <dependencies>
                <!-- 排除插件依赖的老版本log4j -->
                <dependency>
                    <groupId>org.apache.maven.surefire</groupId>
                    <artifactId>surefire-junit4</artifactId>
                    <version>对应子依赖版本</version>
                    <exclusions>
                        <exclusion>
                            <groupId>log4j</groupId>
                            <artifactId>log4j</artifactId>
                        </exclusion>
                    </exclusions>
                </dependency>
                <!-- 引入你指定的新版本log4j -->
                <dependency>
                    <groupId>org.apache.logging.log4j</groupId>
                    <artifactId>log4j-api</artifactId>
                    <version>2.17.1</version>
                </dependency>
                <dependency>
                    <groupId>org.apache.logging.log4j</groupId>
                    <artifactId>log4j-core</artifactId>
                    <version>2.17.1</version>
                </dependency>
            </dependencies>
        </plugin>
    </plugins>
</build>

3. 全局禁用Log4j 1.x

在pom.xml的dependencyManagement里添加规则,强制Maven忽略所有对Log4j 1.x的引入请求:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>0</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

4. 清理本地仓库缓存

有时候本地仓库的缓存会导致异常,执行mvn clean install -U强制更新依赖,或者手动删除本地仓库中log4j/log4j/1.2.14目录,再重新构建。

内容的提问来源于stack exchange,提问作者green.it

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 10:33:18