Настройка Gradle Proxy Server: Полное Руководство с Примерами и FAQ

Настройка 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 в любой сети.

Proxy Ninja
Добавить комментарий