Почти всегда в организациях существует проблема с доступом к репозиториям типа Jcenter или mavenCentral. Ситуация усугубляется тем, что удалённые репозитории раздают артефакты не сами, а через CDN, то есть появляются дополнительные проблемы на файрволлах. Идея воспользоваться чем-то типа Artifactory от Jfrog напрашивается сама собой - разворачиваем один локальный репозиторий в среде с доступом к внешним репозиториям, закачиваем в него требуемые нам артефакты, делаем экспорт артефактов и затем импортируем их в другой локальный репозиторий, который не имеет доступа к внешним репозиториям в Интернете.
docker pull docker.bintray.io/jfrog/artifactory-oss:latest
docker images | grep arti
docker.bintray.io/jfrog/artifactory-oss latest 58d49856785f 6 days ago 582MB
docker run --name artifactory -d -p 8081:8081 docker.bintray.io/jfrog/artifactory-oss:latest
Для управления памятью можно передать переменную среды при запуске:
docker run --name artifactory -d -p 8081:8081 -e EXTRA_JAVA_OPTIONS='-Xms512m -Xmx2g -Xss256k -XX:+UseG1GC' docker.bintray.io/jfrog/artifactory-oss:latest
Admin ⇒ Repositories ⇒ Remote
указать необходимые дальние репозитории, например:
Repository Key Type URL Recalculate Index Replications
----------------------------------------------------------------------------------------------------------------------------
jcenter maven https://jcenter.bintray.com
mavenCentral maven https://repo.maven.apache.org/maven2/
maven {
url "http://127.0.0.1:8081/artifactory/gradle-dev"
}
Теперь при сборке проекта Артефектори подтянет из внешних репозиториев нужные
для проекта артефакты и сохранит у себя.
curl -fL https://getcli.jfrog.io | sh
jfrog rt c local-book-rt --url=http://127.0.0.1:8081/artifactory --user=admin
jfrog rt use local-book-rt
jfrog rt dl gradle-dev/ gradle-dev-20190416_1233/
jfrog rt u gradle-dev-20190416_1233/ gradle-dev-local
Осталось указать в проектах новый локальный Артифактори вместо внешних в
build.gradle, например:
maven {
url "http://127.0.0.1:8082/artifactory/gradle-dev/"
}
и собрать проекты.