[英]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.