繁体   English   中英

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

[英]How to replace a transitive dependency library in a maven project

我有一个依赖库,它被我的 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>

请建议一种通用方法来替换传递库。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM