【问题标题】:Why gradle doesn't search for dependency in other maven repos?为什么 gradle 不在其他 maven repos 中搜索依赖项?
【发布时间】:2016-12-19 13:46:19
【问题描述】:

为什么 gradle 不在所有定义的 maven repos 中搜索依赖项?

Repos 块已定义:

repositories {
    maven {
        name = 'JBoss.org Maven repository'
        url 'https://repository.jboss.org/nexus/content/groups/public'
    }
    maven {
        name = 'spring-milestones'
        url 'http://repo.springsource.org/libs-milestone/'
    }
    mavenCentral()
}

(假设我在子项目net.sf.json-lib:json-lib:2.2.1 的某个地方找到了)我收到:

* What went wrong:
Could not resolve all dependencies for configuration ':myproject:compileClasspath'.
> Could not find json-lib.jar (net.sf.json-lib:json-lib:2.2.1).
  Searched in the following locations:
      http://repo.springsource.org/libs-milestone/net/sf/json-lib/json-lib/2.2.1/json-lib-2.2.1.jar

为什么只有一个搜索位置? json-lib 显然存在于 mavenCentral() 中。

有什么方法可以对其进行分析,或以某种方式进行调试?

附:如果我将mavenCentral() 在 repos 列表中上移一个位置,我可以解决这个问题,但这会以同样的原因破坏另一个子项目的依赖解析——mavenCentral() 中不存在来自“spring”repo 的东西。

【问题讨论】:

    标签: maven gradle build-system dependency-resolution


    【解决方案1】:

    事实上,gradle 会搜索所有的 maven repos。可以看到 JBoss repo 不包含 2.2.1 版本的 json-lib,所以会跳到下一个(spring repo)。

    Spring repo 有 2.2.1,但是,这里的问题是工件已经指定了分发,所以,你只需要修复依赖:

    compile 'net.sf.json-lib:json-lib:2.2.1:jdk15'
    

    【讨论】:

      【解决方案2】:

      就我而言,依赖项一切正常,但 gradle 仍然无法从我拥有的 5 个存储库之一中找到工件。 对我有帮助的是 --refresh-dependencies 选项

      gradle clean build --refresh-dependencies

      我知道我无法找到确切的问题,但这给了我一个快速的解决方案。请注意,所有依赖项都将重新下载,这可能需要一些时间

      我的 gradle 版本是 6.5.1

      【讨论】:

        猜你喜欢
        • 2014-07-01
        • 1970-01-01
        • 2016-09-20
        • 2021-12-25
        • 1970-01-01
        • 2020-08-17
        • 1970-01-01
        • 2019-05-28
        相关资源
        最近更新 更多