Android Gradle Build пытается получить доступ к JCenter, хотя я нигде не настроил его - PullRequest
4 голосов
/ 01 апреля 2019

Наши сборки 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].

1 Ответ

1 голос
/ 02 апреля 2019

У сборок Gradle есть только один репозиторий по умолчанию: портал плагинов Gradle для разрешения плагинов Gradle, который доступен только для разрешения зависимостей скрипта сборки classpath, но не проектных зависимостей.

Если вы видите, что ваша сборка пытается получить доступ к JCenter, скорее всего, источником этого является импортированный файл сборки или плагин.

...