gpt4 book ai didi

java - 我可以告诉 gradle 两个不同的依赖模块实际上是相同的并让它选择版本最高的那个吗?

转载 作者:行者123 更新时间:2023-11-30 08:35:19 25 4
gpt4 key购买 nike

我有一个项目依赖于 Netflix Feign 和 Glassfish Jersey 的实现。

Feign 使用 JAX-RS (JSR 311) 的 1.1 规范,而 glassfish jersey 实现使用 2.0 规范。 2.0 是向后兼容的,但Gradle 依赖项名称已更改

因此我的项目中有两个依赖项:

  • javax.ws.rs:jsr311-api:1.1.1
  • javax.ws.rs:javax-ws-rs-api:2.0.1

两者都在相同的包中实现相同的类,但一个根据 1.x,一个根据 2.x

在我的Java代码中,我只能指出类名和包。

我可以告诉 Gradle 这实际上是同一个包,尽管名称不同,这样只能在类路径中获得一组实现类吗?

现在 JVM 和编译器选择哪个版本的类是随机的。有时它不编译,有时它编译但不运行(MethodNotFoundException)。

最佳答案

最后,我将它添加到我的 gradle 文件中,它看起来不错:

configurations.all {
resolutionStrategy.dependencySubstitution {
substitute module('javax.ws.rs:jsr311-api') with module('javax.ws.rs:javax.ws.rs-api:2.0.1')
}
}

依赖树不再包含 javax.ws.rs:jsr311-api 依赖项,也不再包含 javax.ws.rs.core.Application.getProperties(...) 方法的 MethodNotFound 异常。

关于java - 我可以告诉 gradle 两个不同的依赖模块实际上是相同的并让它选择版本最高的那个吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38267869/

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