如何在Maven项目中替换传递依赖库

时间:2020-07-17 11:09:05

标签: java maven

我有一个依赖关系库,该依赖关系库由我包含在POM中的一个库引入。 安全扫描已将此传递依赖项标记为操作风险,并要求将其升级到最新版本。我需要了解该怎么做? 我尝试从POM中排除该库,然后声明对相同传递依赖项的最新版本的直接依赖项,但出现classNotFound异常。

代码详细说明:- 直接依赖-> hibernate-core 标记为可传递的依赖关系-> ANTLR 2.7.7

我尝试过的失败修复程序->

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>5.4.18.Final</version>
        <exclusions>
            <exclusion>
                <groupId>antlr</groupId>
                <artifactId>antlr</artifactId>
            </exclusion>
        </exclusions> 
    </dependency>
    <dependency>
        <groupId>antlr</groupId>
        <artifactId>antlr</artifactId>
        <version>3.0ea8</version>
    </dependency>

请提出一种替代传递库的通用方法。

1 个答案:

答案 0 :(得分:3)

无需排除。您可以在<dependencyManagement>中覆盖传递依赖项,例如:

<dependencyManagement>
  <dependencies>
     <dependency>
       <groupId>antlr</groupId>
       <artifactId>antlr</artifactId>
       <version>3.0ea8</version>
    </dependency>
...

这将覆盖您指定版本的库的所有可传递引用。

但这不会保护您免受classNotFound异常的影响。如果您更新库,则类名称可能已更改,并且程序可能会中断。

相关问题