Настройка прокси в Gradle: решение проблемы с HTTP 407, 502
Быстрый ответ
Для настройки Gradle на использование прокси определите следующие системные свойства в файле gradle.properties
:
systemProp.http.proxyHost=proxy.example.com
systemProp.http.proxyPort=8080
systemProp.https.proxyHost=proxy.example.com
systemProp.https.proxyPort=8080
Если прокси-сервер требует аутентификацию:
systemProp.http.proxyUser=username
systemProp.http.proxyPassword=password
systemProp.https.proxyUser=username
systemProp.https.proxyPassword=password
В таком случае, Gradle будет направлять HTTP и HTTPS-запросы через указанный прокси-сервер, используя заданные логин и пароль для аутентификации.
Работа с спецсимволами и исключениями
При использовании специальных символов в логине или пароле корректно их закодируйте:
systemProp.http.proxyUser='domain\\username' // Для обратных слэшей используйте двойные '\\'
systemProp.http.proxyPassword='passwordWith$pecial' // Если в пароле присутствуют символы-доллары, окружите их одинарными кавычками.
Эти параметры актуальны для комбинаций имени пользователя и пароля, содержащих специальные символы, особенно при использовании Active Directory.
Чтобы исключить некоторые хосты из использования прокси, воспользуйтесь параметром nonProxyHosts
:
systemProp.http.nonProxyHosts=*.local|localhost|10.*
Указанные в этом параметре домены и IP-адреса будут доступны напрямую, минуя прокси.
Тонкая настройка
Индивидуальные настройки для конкретных проектов
В корне определенного проекта можно указать свой файл gradle.properties
:
# Персонализированные настройки для определенного проекта
systemProp.http.proxyHost=custom-proxy.example.com
systemProp.http.proxyPort=8081
Прокси через переменные окружения
С помощью переменных окружения в файле build.gradle
возможно задать настройки прокси:
tasks.register('setHttpProxyFromEnv') {
doLast {
def proxyHost = System.getenv('HTTP_PROXY_HOST')
def proxyPort = System.getenv('HTTP_PROXY_PORT')
if (proxyHost != null && proxyPort != null) {
System.setProperty('http.proxyHost', proxyHost)
System.setProperty('http.proxyPort', proxyPort)
}
}
}
Важно, чтобы этот блок был выполнен в начале процесса сборки проекта.
Способы борьбы с типичными HTTP ошибками: 407, 502
Ошибки 407 или 502 чаще всего указывают на проблемы в настройках прокси. Проверка значений proxyHost
, proxyPort
, proxyUser
и proxyPassword
в файле gradle.properties
помогает избежать этих ошибок.
Визуализация
Включение прокси-настроек в Gradle можно представить метафорой управления движением:
🌐 Интернет
|
🚦------+------🚦
| 🛠 |
| Город Gradle |
| 🧰 |
🚦------+------🚦
|
💻 Ваш компьютер
Контроль прокси Gradle:
systemProp.http.proxyHost=proxy.example.com // Прокси-сервер как основная дорога
systemProp.http.proxyPort=8080 // Используемый порт 8080
systemProp.http.proxyUser=username // Учетная запись пользователя
systemProp.http.proxyPassword=password // Пароль
Прокси-настройки заботятся о безопасной доставке процессов сборки.
Настройка, проверки и точная корректировка
Уникальный прокси для Gradle Wrapper
Для Gradle Wrapper могут потребоваться отдельные настройки в файле gradle-wrapper.properties
:
systemProp.http.proxyHost=wrapper-proxy.example.com
systemProp.http.proxyPort=8082
Убедитесь, что указанные настройки соответствуют вашей сетевой политике.
Соответствие прокси-настроек Gradle и системы
Для гармоничной работы системы сборки сверьте системные переменные прокси с настройками Gradle:
echo $HTTP_PROXY
echo $HTTPS_PROXY
Прокси в сложных сетевых конфигурациях
В случаях более сложных ситуаций, например, когда требуется использовать несколько прокси или динамически изменять настройки, обращайтесь к системному администратору или создавайте пользовательские скрипты.