Наши сборки Android работают на CI-агентах нашей компании.Они не имеют доступа к Интернету и должны получить все свои зависимости Maven из виртуальных репозиториев в нашей Артефактории.
Теперь я заметил, что все сборки занимают несколько минут дольше, чем на моем ПК, и, очевидно, задержка происходит из-заGradle пытается получить доступ к JCenter:
build 01-Apr-2019 11:56:44 11:56:43.449 [DEBUG] [org.apache.http.impl.execchain.MainClientExec] Opening connection {s}->https://jcenter.bintray.com:443
build 01-Apr-2019 11:56:44 11:56:43.452 [DEBUG] [org.apache.http.impl.conn.DefaultHttpClientConnectionOperator] Connecting to jcenter.bintray.com/18.195.111.75:443
build 01-Apr-2019 11:56:44 11:56:43.452 [DEBUG] [org.apache.http.conn.ssl.SSLConnectionSocketFactory] Connecting socket to jcenter.bintray.com/18.195.111.75:443 with timeout 30000
build 01-Apr-2019 11:56:44 11:56:43.453 [DEBUG] [org.apache.http.impl.conn.DefaultHttpClientConnectionOperator] Connect to jcenter.bintray.com/18.195.111.75:443 timed out. Connection will be retried using another IP address
build 01-Apr-2019 11:56:44 11:56:43.454 [DEBUG] [org.apache.http.impl.conn.DefaultHttpClientConnectionOperator] Connecting to jcenter.bintray.com/35.156.75.35:443
build 01-Apr-2019 11:56:44 11:56:43.454 [DEBUG] [org.apache.http.conn.ssl.SSLConnectionSocketFactory] Connecting socket to jcenter.bintray.com/35.156.75.35:443 with timeout 30000
Конечно, это не может работать, но Gradle, кажется, повторяет это снова и снова, пока, наконец, не сдастся.Затем сборка работает в любом случае, потому что все зависимости доступны в Artifactory ...
Вот как мы сейчас настраиваем наши репозитории для Gradle:
repositories {
def artifactoryBaseUrl = "https://artifactory.somecompany.com"
maven {
url "${artifactoryBaseUrl}/libs-release-local"
}
maven {
url "${artifactoryBaseUrl}/google-maven"
}
maven {
url "${artifactoryBaseUrl}/fabric-maven"
}
maven {
url "${artifactoryBaseUrl}/maven-central"
}
maven {
url "${artifactoryBaseUrl}/gradle-plugins"
}
maven {
url "${artifactoryBaseUrl}/jitpack-maven"
}
}
Как видите, здесь нет упоминанийJCenter вообще - как Gradle решает, что он хочет получить к нему доступ, и есть ли способ отключить это?
Я вижу это где-то еще дальше в журнале, но не знаю, откуда оно взято:
build 01-Apr-2019 11:40:23 11:40:22.351 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.modulecache.ResolvedArtifactCaches] Creating new in-memory cache for repo 'BintrayJCenter' [1dd858de07b774d6be9d3e38c5646087].