当前位置: 首页 > 知识库问答 >
问题:

为什么Maven要下载log4j-1.2.12。罐子

赵雪峰
2023-03-14

我正试图从maven项目中删除所有易受攻击的log4j依赖项。

我在pom中使用log4j 2.16依赖项,并在其他依赖项中添加了log4j和sl4j的排除项。

尽管如此,每当我运行maven包目标时,它都会下载log4j 1.2.12 jar。

[INFO] Copying 1 resource
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ Test ---
Downloading: https://repo.maven.apache.org/maven2/log4j/log4j/1.2.12/log4j-1.2.12.pom
Downloaded: https://repo.maven.apache.org/maven2/log4j/log4j/1.2.12/log4j-1.2.12.pom (145 B at 0.1 KB/sec)
Downloading: https://repo.maven.apache.org/maven2/log4j/log4j/1.2.12/log4j-1.2.12.jar
Downloaded: https://repo.maven.apache.org/maven2/log4j/log4j/1.2.12/log4j-1.2.12.jar (350 KB at 101.6 KB/sec)

我甚至运行了mvn dependency:tree命令,它只显示log4j 2.16。

下载log4j 1.2.12 jar的原因是什么?

共有1个答案

俞博涛
2023-03-14

TL;DR:这不是安全问题,但如果你认为是,请升级你的maven编译器插件。

Maven插件,即在构建项目时执行实际工作的库也有依赖关系:log4j-1.2.12是项目使用的Maven-compiler-plugin-3.1的(可传递)依赖关系。

因此,Maven下载log4j并不意味着它将与您的应用程序打包在一起。

备注:maven编译器插件的3.1版是一个相当旧的版本。此版本在默认生命周期绑定中指定,出于兼容性原因,将永远不会升级。然而,您应该在POM文件中指定更新的版本,例如:

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.10.1</version>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>

较新版本的maven-compiler-plugin没有log4j: log4j依赖项。

 类似资料:
  • [信息]下载:https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.jar [信息]下载:https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-

  • 问题内容: 当尝试使用maven构建Web应用程序时,当我的Internet连接处于连接状态时,通常会出现以下错误。 我的问题是,为什么在较早构建同一应用程序时,maven总是每次都要下载。 我的配置每次Maven都要下载时可能出什么毛病? 以下是我尝试离线构建时遇到的错误: 问题答案: 在您的元素(或项目的父级或公司父级POM)中查找该元素。它看起来像下面的样子。 注意元素。该示例告诉Maven

  • 似乎自从我们将tomcat升级到Version8+后,我们在启动时就会重新加载上下文。然而,这似乎只发生在我们的开发环境中(带有eclipse和Tomcat8.5的windows OS)。我们的生产环境(带有Tomcat8.5的linux OS)不存在此问题。我把它贴在下面,但我没有看到任何迹象表明为什么会发生这样的tomcat日志。我知道这是正常的行为,在web应用程序目录中的一些东西被改变,但

  • 问题内容: 我一定会丢失一些东西,但是我已经看了几天了,但是到底为什么您会使用log4j2而不是log4j(而不是性能)? 从目前为止我所看到的,log4j2被宣传为更易于配置,但实际上却要复杂得多(现在已经三天了,我仍然无法在我的主目录中写日志)。自动配置对我根本不起作用(或者至少我无法使其工作),配置文件本身的结构实质上更复杂,在运行时添加东西以帮助诊断似乎更加困难。 因此,除了性能之外,还有

  • 我在eclipse Juno中创建了maven项目(m2eclipse)。项目依赖于Hive0.10和hadoop 0.23.5。 Maven解决了所有的依赖关系,编译一切正常。现在我想看看javadoc和源代码,所以我点击mave->download javadoc,但没有结果。 M2E-lastupdated.properties文件包含如下所示行: 我甚至没有看到javadoc丢失的错误。

  • 问题内容: 我在多模块项目中使用依赖项时遇到麻烦。例如,当我声明模块依赖于这样的模块时(完整代码在此处): 如果我使用Maven 2 运行,则会出现以下错误: 如果我使用Maven 3,则会收到错误消息: 在后一种情况下,我特别困惑,因为我认为它应该在寻找type 而不是type 的工件。 使用maven 2或maven 3,可以通过运行进行编译。使用maven 3,我还可以通过运行进行编译。 但