gpt4 book ai didi

java - 在 Maven 中,您可以禁止在代码中使用传递依赖项,但仍将其保留在类路径中吗?

转载 作者:行者123 更新时间:2023-11-30 03:36:57 24 4
gpt4 key购买 nike

有一个库 A 依赖于库 B。我的项目将 A 作为声明的依赖项,但这也将 B 拉入我的项目的类路径中。如何防止库 B 中的类在我的项目中使用?

我知道依赖排除机制,但这不是一个选项,因为如果我排除 B 那么程序将无法工作,因为 A 依赖于它。出于同样的原因,maven-enforcer-plugin 也不起作用(至少是它的标准规则)。

我正在寻找的是一种如果从我的项目类导入 A 的传递依赖项中的包时导致构建失败的方法。

最佳答案

(a) 将 A 设为编译时依赖项并在该节中排除 B。

(b) 添加 B 作为运行时依赖项。

这样就达到了你想要的效果,即B在编译时不可用,但在运行时包含。无需借助额外的工具来检查基于包的策略。

这是一个示例(根据您的情况替换 groupId 和版本):

<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>A</artifactId>
<version>${project.version}</version>
<exclusions>
<exclusion>
<groupId>${project.groupId}</groupId>
<artifactId>B</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>B</artifactId>
<version>${project.version}</version>
<scope>runtime</scope>
</dependency>
</dependencies>

关于java - 在 Maven 中,您可以禁止在代码中使用传递依赖项,但仍将其保留在类路径中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27654832/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com