- Настройка Proxy Server для Gradle: Исчерпывающее Руководство
- Что такое Gradle и зачем ему прокси?
- Способы настройки прокси в Gradle
- 1. Через gradle.properties (рекомендуется)
- 2. Через командную строку
- 3. Настройка в коде (build.gradle)
- Типичные ошибки и решения
- Особые случаи: NTLM и SOCKS прокси
- Проверка работоспособности прокси
- FAQ: Частые вопросы о Gradle Proxy
- Как настроить прокси для Docker-контейнера с Gradle?
- Почему не работает HTTPS через прокси?
- Как обойти прокси для локальных репозиториев?
- Сохранять ли пароль в открытом виде в gradle.properties?
- Заключение
Настройка Proxy Server для Gradle: Исчерпывающее Руководство
В корпоративных сетях доступ к внешним ресурсам часто ограничен прокси-серверами. Если вы используете Gradle для сборки проектов, правильная настройка proxy становится критической. Это руководство объяснит, как настроить прокси для Gradle на разных уровнях, решит частые проблемы и ускорит вашу разработку.
Что такое Gradle и зачем ему прокси?
Gradle — система автоматизации сборки, управляющая зависимостями из репозиториев (Maven Central, JCenter). Без доступа через прокси:
- Сборки падают с ошибками подключения
- Загрузка зависимостей блокируется
- Плагины не устанавливаются
Настройка proxy обеспечивает беспрепятственный доступ к ресурсам через корпоративный firewall.
Способы настройки прокси в Gradle
1. Через gradle.properties (рекомендуется)
Добавьте в ~/.gradle/gradle.properties
или project/gradle.properties
:
- HTTP:
systemProp.http.proxyHost=proxy.example.com
- HTTPS:
systemProp.https.proxyHost=proxy.example.com
- Порт:
systemProp.http.proxyPort=8080
- Аутентификация:
systemProp.http.proxyUser=user
иsystemProp.http.proxyPassword=pass
2. Через командную строку
Задайте параметры при запуске:
./gradlew build -Dhttp.proxyHost=proxy.example.com -Dhttp.proxyPort=8080
3. Настройка в коде (build.gradle)
Добавьте в build.gradle
:
tasks.withType(Test) {
systemProperty 'http.proxyHost', 'proxy.example.com'
systemProperty 'http.proxyPort', '8080'
}
Типичные ошибки и решения
- “Connection timed out”: Проверьте корректность host/port и доступность прокси.
- SSL ошибки: Добавьте сертификат прокси в truststore JDK командой:
keytool -importcert -alias proxycert -file proxy.crt -keystore $JAVA_HOME/lib/security/cacerts
- Аутентификация не работает: Убедитесь, что пароль содержит экранированные символы (например, @ → %40).
Особые случаи: NTLM и SOCKS прокси
Для NTLM-аутентификации используйте плагин com.github.mlaccetti.ntlm
:
plugins { id 'com.github.mlaccetti.ntlm' version '1.1' }
ntlmProxy {
host = 'proxy.company.com'
port = 8080
domain = 'CORP'
}
SOCKS прокси настраивается через JVM флаги в gradle.properties
:
systemProp.socksProxyHost=proxy.example.com
systemProp.socksProxyPort=1080
Проверка работоспособности прокси
Запустите тестовую задачу:
./gradlew dependencies --refresh-dependencies
Успешная загрузка зависимостей подтвердит корректность настроек.
FAQ: Частые вопросы о Gradle Proxy
Как настроить прокси для Docker-контейнера с Gradle?
Добавьте ENV-переменные в Dockerfile:
ENV HTTP_PROXY=http://user:pass@proxy:port
ENV HTTPS_PROXY=http://user:pass@proxy:port
Почему не работает HTTPS через прокси?
Убедитесь, что настроены https.proxyHost
и https.proxyPort
, а сертификат прокси добавлен в хранилище доверенных.
Как обойти прокси для локальных репозиториев?
В gradle.properties
укажите:
systemProp.http.nonProxyHosts=localhost|127.*|*.internal
Сохранять ли пароль в открытом виде в gradle.properties?
Нет! Используйте переменные окружения или защищенные хранилища (например, Credential Manager).
Заключение
Правильная настройка прокси для Gradle избавит от сбоев сборки и сэкономит часы работы. Используйте gradle.properties
для глобальных настроек, тестируйте подключение через --refresh-dependencies
и не храните пароли в открытом виде. Следуя этому руководству, вы обеспечите бесперебойную работу Gradle в любой сети.