【问题标题】:How to exclude a transitive dependency inside a transitive dependency?如何在传递依赖中排除传递依赖?
【发布时间】:2021-07-26 12:57:34
【问题描述】:
I have a maven project "Project-1". This project uses some dependencies, let's consider jackson databind 2.9.8

Another maven project "Project-2" uses "Project-1" as a dependency.

"Project-3" uses "Project-2" as a dependency.

在“Project-3”中,我使用了使用依赖管理标签的jackson databind 2.10.0。另外,在“Project-1”的pom中“Project-2”的依赖标签下,我添加了jackson databind的exclusion标签。

在“Project-3”的依赖树中,只有一个版本的杰克逊数据绑定得到解决,即 2.10.0

但是,在管道中的安全扫描中,它仍然报告杰克逊数据绑定 2.9.8 的一些安全问题

我不确定这个版本是如何得到解决的,即使它没有在依赖关系树中提及。

我现在正在尝试在“Project-1”中添加排除项。但是,有没有更好的方法在“Project-3”中排除它?

【问题讨论】:

  • 看看mvn dependency:list,看看它是否还在。
  • 它也没有显示在依赖项列表中。但是,我又扫了一遍。它在扫描中。
  • 那么,扫描仪扫描什么?项目依赖,maven插件依赖?也许扫描器还会扫描排除的依赖项?
  • 扫描器扫描 maven 构建的最终 jar。尽管依赖列表没有显示旧版本,但 maven 也以某种方式打包了旧 jar。这就是为什么我试图在 pom 中排除它
  • 那么,它出现在 maven 日志中的什么位置?

标签: maven maven-2 pom.xml transitive-dependency


【解决方案1】:

似乎依赖“jackson databind”不是由 Maven 拉取的,所以他们无法在 Maven 中排除它。

它可能是您运行的 Maven 插件的依赖项,您可以尝试通过运行带有调试标志 -X 的 Maven 来找出它。那么您可能需要删除该插件。

您的“扫描器”可能不仅扫描项目的依赖关系,还扫描其他东西。也许这是扫描仪中的一个错误,因此排除的工件也会被扫描。

【讨论】:

    猜你喜欢
    • 2018-07-06
    • 2019-10-29
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    • 2017-06-15
    • 1970-01-01
    • 2016-04-20
    相关资源
    最近更新 更多