为什么 Gradle 解析版本号错误的包?

Why does Gradle resolve a package with wrong version number?

我正在构建一个 Web 应用程序,我正在使用 Dropwizard 1.3.0,它依赖于 jetty-io 9.4.8。这个依赖与另一个包(dropwizard-websocket-jee7-bundle 2.0.0)有冲突,因为它似乎获取了错误的版本号。

我查看了那个包,发现在 9.4.x - AbstractWebSocketConnection.java from 9.3.x - AbstractWebSocketConnection.java 中重命名的方法。问题是,即使在 Gradle 依赖关系树中显示我获取了 9.4.8(我需要的新版本),我仍然得到较旧的 9.3.x java 文件导致冲突。我试图使缓存无效/重新启动并重建整个项目,但我似乎总是得到过时的文件。

可能的解决方案是什么?

尝试在您的 build.gradle 中强制使用特定版本 此处示例:https://docs.gradle.org/current/dsl/org.gradle.api.artifacts.ResolutionStrategy.html

如果你的错误 class 是由传递依赖导入的,请尝试排除显式传递依赖。 例如,如果您需要的库是 'my.group:requiredLibrary:2.0.0' 并且 'my.group:someDependency:0.1.5' 中有另一个版本,您可以这样做:

dependencies{
  compile 'my.group:requiredLibrary:2.0.0'
  compile ('my.group:someDependency:0.1.5'){
      exclude group: 'my.group'  module:'requiredLibrary'
  }
}