在 Gradle 中禁用 jCenter 存储库

Disable jCenter repository in Gradle

在我的 Gradle 项目中,我使用自定义 Maven 存储库来下载我需要的依赖项:

buildscript {
    repositories {
        maven {
            url 'https://maven.my-company.com/'
        }
    }
}

allprojects {
    repositories {
        maven {
            url 'https://maven.my-company.com/'
        }
    }
}

我注意到在我们的 Jenkins 上,每个构建都比在我的计算机上花费更多的时间来完成。 在调试标志 (./gradlew --debug --refresh-dependencies clean :app:assembleDebug | grep jcenter) 的帮助下,我注意到在 jCenter 中查找每个依赖项,即使我将它从 repositories 块中删除:

[DEBUG] [org.gradle.internal.resource.transfer.DefaultCacheAwareExternalResourceAccessor] Constructing external resource: https://jcenter.bintray.com/com/google/firebase/firebase-iid/maven-metadata.xml

由于我们的 Jenkins 无法访问外部网络,这些请求会超时并增加整体构建时间。 在 Gradle 中完全禁用 jCenter(或任何其他未明确定义的存储库)存储库有什么办法吗?

我在 Gradle 的 GitHub 存储库 (issue 10376) 上问了这个问题。 问题不是直接来自我的 Gradle 配置,而是一个添加了 jCenter 存储库本身的插件。

为了找到添加存储库的插件,我创建了一个 init.gradle 脚本,如下所示:

allprojects {
    repositories.all {
        if (url.host == 'jcenter.bintray.com') {
            new Throwable('jcenter repository was just added').printStackTrace()
        }
    }
}

和运行 ./gradlew --init-script init.gradle help。在打印的堆栈跟踪中,我可以找到导致问题的插件,在我的例子中 at io.realm.gradle.Realm.apply(Realm.groovy:75).