【问题标题】:Log4j - How to scan for log4j usages in maven projects along with project name?Log4j - 如何扫描 maven 项目中的 log4j 用法以及项目名称?
【发布时间】:2021-12-15 11:32:17
【问题描述】:

作为 Log4jshell 问题的一部分,我们正在尝试分析哪些项目使用了哪个版本的 Log4j。我确实尝试了以下 Maven 命令

mvn dependency:list | grep log4j
mvn dependency:tree -Dverbose
mvn dependency:tree -Dverbose | grep log4

但它只列出这样的信息

mvn dependency:tree | grep log4
[INFO] \- org.apache.logging.log4j:log4j-api:jar:2.13.1:provided
[INFO] +- org.apache.logging.log4j:log4j-api:jar:2.13.1:provided
[INFO] |  |  +- log4j:log4j:jar:1.2.16:compile
[INFO] |  |  +- log4j:log4j:jar:1.2.16:compile
[INFO] |  +- log4j:log4j:jar:1.2.17:provided
[INFO] +- log4j:log4j:jar:1.2.17:compile
[INFO] +- org.apache.logging.log4j:log4j-api:jar:2.13.1:compile
[INFO] \- org.apache.logging.log4j:log4j-core:jar:2.13.1:compile
[INFO] +- org.apache.logging.log4j:log4j-api:jar:2.13.1:compile
[INFO] +- org.apache.logging.log4j:log4j-core:jar:2.13.1:compile
[INFO] +- org.springframework.boot:spring-boot-starter-log4j2:jar:2.1.8.RELEASE:compile
[INFO] |  +- org.apache.logging.log4j:log4j-slf4j-impl:jar:2.11.2:compile
[INFO] |  +- org.apache.logging.log4j:log4j-jul:jar:2.11.2:compile
[INFO] +- org.springframework.boot:spring-boot-starter-log4j2:jar:2.1.8.RELEASE:compile

我在我们的工作区中找不到它指向的项目。有人可以帮忙吗?

注意:有几个 maven 项目,所有 pom.xml 文件都有一个父 pom.xml。所以想确定哪些 maven 项目正在使用 log4j 以及名称。

【问题讨论】:

  • 打印出整个树而不是通过 grep 过滤行...树显示依赖项的根在哪里...
  • grep 命令列出是否使用 log4j。命令的格式以查看哪个项目或第三方库正在使用它实际需要的内容。尝试 grep 不同的 grep 命令,但到目前为止还没有那么幸运。
  • 在不使用 grep 的情况下执行命令会列出整个依赖关系树。由于工作区使用了数百个库,因此手动扫描依赖树并不容易。
  • 是的,我知道这并不容易。但你想知道它来自哪里......所以你必须走那条路......

标签: maven log4j


【解决方案1】:

使用包含选项

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

示例输出:

[INFO] com.test:test:jar:0.0.1-SNAPSHOT
[INFO] \- org.springframework.boot:spring-boot-starter-security:jar:2.5.3:compile
[INFO]    \- org.springframework.boot:spring-boot-starter:jar:2.5.3:compile
[INFO]       \- org.springframework.boot:spring-boot-starter-logging:jar:2.5.3:compile
[INFO]          \- org.apache.logging.log4j:log4j-to-slf4j:jar:2.14.1:compile
[INFO]             \- org.apache.logging.log4j:log4j-api:jar:2.14.1:compile

documentation

【讨论】:

  • 你有什么工具可以帮助找出哪些项目正在使用特定的工件?
【解决方案2】:

感谢您的回答。是的,它确实回答了我的问题。我使用下面的命令得到了结果。

mvn 依赖:tree -Dincludes=org.apache.logging.log4j -DoutputFile=`pwd`/maven-report-log4j.txt -DappendOutput=true

【讨论】:

    猜你喜欢
    • 2016-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-24
    • 2021-04-01
    • 2011-07-13
    • 2022-01-18
    • 1970-01-01
    相关资源
    最近更新 更多