Настройка прокси в Gradle: решение проблемы с HTTP 407, 502

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для настройки Gradle на использование прокси определите следующие системные свойства в файле gradle.properties:

properties
Скопировать код
systemProp.http.proxyHost=proxy.example.com
systemProp.http.proxyPort=8080
systemProp.https.proxyHost=proxy.example.com
systemProp.https.proxyPort=8080

Если прокси-сервер требует аутентификацию:

properties
Скопировать код
systemProp.http.proxyUser=username
systemProp.http.proxyPassword=password
systemProp.https.proxyUser=username
systemProp.https.proxyPassword=password

В таком случае, Gradle будет направлять HTTP и HTTPS-запросы через указанный прокси-сервер, используя заданные логин и пароль для аутентификации.

Кинга Идем в IT: пошаговый план для смены профессии

Работа с спецсимволами и исключениями

При использовании специальных символов в логине или пароле корректно их закодируйте:

properties
Скопировать код
systemProp.http.proxyUser='domain\\username'  // Для обратных слэшей используйте двойные '\\'
systemProp.http.proxyPassword='passwordWith$pecial'  // Если в пароле присутствуют символы-доллары, окружите их одинарными кавычками.

Эти параметры актуальны для комбинаций имени пользователя и пароля, содержащих специальные символы, особенно при использовании Active Directory.

Чтобы исключить некоторые хосты из использования прокси, воспользуйтесь параметром nonProxyHosts:

properties
Скопировать код
systemProp.http.nonProxyHosts=*.local|localhost|10.*

Указанные в этом параметре домены и IP-адреса будут доступны напрямую, минуя прокси.

Тонкая настройка

Индивидуальные настройки для конкретных проектов

В корне определенного проекта можно указать свой файл gradle.properties:

properties
Скопировать код
# Персонализированные настройки для определенного проекта
systemProp.http.proxyHost=custom-proxy.example.com
systemProp.http.proxyPort=8081

Прокси через переменные окружения

С помощью переменных окружения в файле build.gradle возможно задать настройки прокси:

groovy
Скопировать код
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 можно представить метафорой управления движением:

Markdown
Скопировать код
       🌐 Интернет
          |
  🚦------+------🚦
  |      🛠      |
  |  Город  Gradle |
  |      🧰      |
  🚦------+------🚦
          |
       💻 Ваш компьютер

Контроль прокси Gradle:

properties
Скопировать код
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:

properties
Скопировать код
systemProp.http.proxyHost=wrapper-proxy.example.com
systemProp.http.proxyPort=8082

Убедитесь, что указанные настройки соответствуют вашей сетевой политике.

Соответствие прокси-настроек Gradle и системы

Для гармоничной работы системы сборки сверьте системные переменные прокси с настройками Gradle:

shell
Скопировать код
echo $HTTP_PROXY
echo $HTTPS_PROXY

Прокси в сложных сетевых конфигурациях

В случаях более сложных ситуаций, например, когда требуется использовать несколько прокси или динамически изменять настройки, обращайтесь к системному администратору или создавайте пользовательские скрипты.

Полезные материалы

  1. Настройка среды сборки

  2. Настройка прокси в Gradle – Stack Overflow

  3. Пример настройки прокси в Gradle – GitHub Gist

  4. Обучающее видео по настройке прокси в Gradle – YouTube

  5. Gradle Goodness: Работа через прокси – Блог

  6. Как задать прокси для JVM – Stack Overflow

  7. Динамические версии, публикуемые с java-platform и versionMapping · Вопрос #8887 · gradle/gradle · GitHub