【问题标题】:Why does Gradle resolve a package with wrong version number?为什么 Gradle 会解析版本号错误的包?
【发布时间】:2018-03-19 11:04:53
【问题描述】:

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

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

对此有什么可能的解决方案?

【问题讨论】:

    标签: java gradle intellij-idea jetty dropwizard


    【解决方案1】:

    如果您的坏类是由传递依赖项导入的,请尝试明确排除传递依赖项。 例如,如果您需要的库是 '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'
      }
    }
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-03-28
        • 1970-01-01
        • 1970-01-01
        • 2023-03-20
        • 2019-12-27
        • 2023-01-24
        相关资源
        最近更新 更多