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

如何阻止maven-dependency-plugin自动下载log4j?

解决maven-dependency-plugin自动下载log4j 1.2.12的方案

一、优先升级插件版本

根据MDEP-902的问题记录,这个bug已经在maven-dependency-plugin的后续版本中修复(比如3.6.2及以上)。直接升级插件就能彻底解决问题:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>3.6.2</version> <!-- 推荐使用最新稳定版 -->
        </plugin>
    </plugins>
</build>

二、通过仓库配置拦截下载

如果暂时无法升级插件,可以在项目pom.xml或全局settings.xml中配置仓库排除规则,阻止Maven下载log4j 1.2.12:

<repositories>
    <repository>
        <id>central</id>
        <url>https://repo.maven.apache.org/maven2</url>
        <releases>
            <enabled>true</enabled>
            <exclusions>
                <exclusion>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                    <version>1.2.12</version>
                </exclusion>
            </exclusions>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
</repositories>

或者用镜像拦截(更彻底):

<mirrors>
    <mirror>
        <id>block-log4j-1.2.12</id>
        <mirrorOf>central:log4j:log4j:1.2.12</mirrorOf>
        <url>file:///dev/null</url> <!-- 指向无效路径,触发下载失败 -->
    </mirror>
</mirrors>

三、临时应急:依赖管理标记为Provided

在项目的依赖管理中强制标记该版本的log4j为provided,让Maven认为这个包已经由环境提供,不会主动下载:

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

关于触发下载的原因

这个问题并非插件直接/间接依赖log4j,而是插件在执行依赖分析时,加载的某些旧Maven兼容性组件会尝试解析log4j 1.2.12的POM,从而触发Maven的下载逻辑。官方已经在后续版本中修复了这个不合理的解析行为。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 22:25:35