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(或任何其他未明确定义的存储库)存储库?
我在 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)。