由于传递依赖关系如何解决pom中的问题

Posted

技术标签:

【中文标题】由于传递依赖关系如何解决pom中的问题【英文标题】:How to resolve issues in pom due to transitive dependencies 【发布时间】:2021-07-29 02:45:42 【问题描述】:

我正在执行一项任务,以消除 JFrog 插件识别的问题,该插件按风险类别(高、中等)识别 POM 中的条目。

在我的 POM 中,我得到了这些条目的红色波浪线,我正在尝试找出这些条目的原因以及如何解决它。

更新 为 POM 添加文本。之前添加图像的原因是为了显示红色波浪线。它们仅针对图像中的 3 个依赖项显示

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.avro</groupId>
        <artifactId>avro</artifactId>
        <version>1.9.1</version>
    </dependency>
    <dependency>
        <groupId>org.jsonschema2pojo</groupId>
        <artifactId>jsonschema2pojo-maven-plugin</artifactId>
        <version>1.1.1</version>
    </dependency>

此外,当我查看 JFrog 输出时,我什至想清理非关键问题,例如下面屏幕截图中以黄色显示的问题。

我还没有找到一种方法来确定在这些情况下修复是什么,然后应用修复。这是我正在开发的一个全新的应用程序,但是使用现有应用程序中的 POM,因为它是一个大 pom,我需要实现大多数类似的功能,但是对于一个新的 pom,希望从干净的开始尽可能

感谢您的任何建议。

更新 2

谢谢@yahavi

在下图中,显示的版本是另一个 jar 的下行版本。此外,对于 spring-boot-starter-web,在 JFrog 中,它没有显示任何关键问题,但在 pom 中它有红色的波浪线。

这就是我想知道的,如何修复下行路径版本依赖项。

谢谢

【问题讨论】:

首先不要在这里张贴图片更好张贴文字...其次为什么您使用插件作为没有意义的依赖项(-maven-plugin)...? 谢谢。我将添加文本。这个特定的项目应该使用 jsonschema2pojo 插件从 json 生成 java 类,这就是现有项目使用 maven 插件的原因(我认为)。我刚刚复制了 POM,现在正在尝试清理。 @khmarbaise - 关于如何清理 POM 以使其符合安全扫描的任何建议?谢谢 第一步从依赖中移除插件。 谢谢@khmarbaise。是的,在您之前建议之后,我确实已经删除了它。 Next 如何找出 spring-boot-starter-weborg.apache.avro 下的 squigglys 有什么问题?然后如何修复我的 POM,使依赖 POM 中的版本不会显示为关键或高 【参考方案1】:

要查看有关易受攻击组件的更多详细信息,请单击黄色灯泡,然后单击“在依赖关系树中显示”。站在依赖项上或单击alt+enter 时,应该会出现黄色灯泡。

在“组件问题详细信息”下,您可以查看与所选组件及其传递组件相关的问题。 粗体中的问题与您的组件直接相关。在以下示例中,将 org.jenkins-ci.plugins:jira 升级到 3.0.11 将解决关键级别问题:

要过滤掉非严重问题,请删除 严重性 过滤器中除“严重”之外的所有严重性:

阅读更多关于在 JFrog IDEA 插件here 中扫描本地项目的信息。

【讨论】:

谢谢。如果版本不在您的 pom 中,而是在依赖于下行路径的 pom 中,我们如何修复它。我也在用图像更新问题。希望你能帮助我 如果在更新直接依赖版本后传递依赖版本没有改变,请执行以下操作: 1. 将传递依赖添加为固定版本的直接依赖。 2、在传递依赖上右击->“排除依赖”。 我在某处看到为传递依赖添加了正确版本的属性。我尝试了它而不是将其添加为直接依赖项,并且也修复了它。但不知道这是否是正确的方法,或者是否会导致任何其他问题 您可以在“组件”下的依赖树中检查(刷新后)传递依赖的真实版本。 谢谢。那是我得到版本的地方。我的问题更多是关于将它添加到 POM.xml 中的 标记 - 这是否是正确的方法。添加这种方式确实会从漏洞列表中删除该项目 2.10.5.13.0.24 不确定我们如何添加代码或其他标签在评论中

以上是关于由于传递依赖关系如何解决pom中的问题的主要内容,如果未能解决你的问题,请参考以下文章

如何通过父pom中的dependencyManagement强制maven依赖版本?

maven multiModuleProjectDirectory 依赖

Maven依赖jar包版本冲突解决方案

如何解决 Maven/Gradle 中的多级间接缺失依赖地狱?

如何查看 Maven pom.xml 文件的传递依赖项?

使用 gradle 未解决 aar 库的传递依赖关系