在 Gradle 中禁用 jCenter 存储库

Gaë*_*tan 4 android gradle jcenter

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

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

allprojects {
    repositories {
        maven {
            url 'https://maven.my-company.com/'
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我注意到在我们的 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
Run Code Online (Sandbox Code Playgroud)

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

Gaë*_*tan 6

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

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

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

并跑了./gradlew --init-script init.gradle help。在打印的堆栈跟踪中,我可以找到导致问题的插件,就我而言at io.realm.gradle.Realm.apply(Realm.groovy:75)