Gradle, не работающий за прокси с NTLM в Windows

Я просто тестирую gradle (абсолютное noob в этом поле).

Я пытаюсь это сделать в окне Windows. Я использовал Maven для сборки и выпуска для меня с той же машины. Он находится за прокси с аутентификацией NTLM. И это работало хорошо. Однако, как-то gradle не делает этого для меня.

My build.gradle имеет следующую конфигурацию (кроме других)

// Java plugin to build our JAR artifact.
apply plugin: 'java' 
// Build stuff with jdk 1.7
sourceCompatibility = 1.7
targetCompatibility = 1.7
// Regular name and version for your project. 
group = 'foo.bar.gradle'
version = '1.0-SNAPSHOT'
// The local maven repository
def localMavenRepo = 'file://C:/ProgramFiles/MavenRepository'
repositories {
// Use the maven central repository. 
mavenCentral()
// ... and the local maven repository.
maven { url localMavenRepo }
// maven { url 'http://www.springsource.com/repository/' }
}
dependencies {
compile 'org.databene:contiperf:2.2.0','org.springframework:spring-webmvc:3.2.0.RELEASE' 
testCompile 'junit:junit:4.11' 
/*compile.exclude module: 'commons'*/
/*all*.exclude*/ 
}

My/gradle.properties имеет следующую настройку

systemProp.proxySet=true
systemProp.http.proxyHost=<proxy name,="" same="" as="" that="" set="" in="" maven="">
systemProp.http.proxyPort=8080
systemProp.http.proxyUser=<domain name="">/<user name=""> 
</user></domain></proxy>

Однако, когда я запускаю это, я получаю следующую ошибку

NEGOTIATE authentication error: No valid credentials provided (Mechanism level:
No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)
)

Это в версии 1.3 из Gradle. Пожалуйста помоги.

Update: Теперь я обновлен до gradle -1.4-rc-3 Теперь мой файл Gradle.properties выглядит следующим образом

systemProp.proxySet="true"
systemProp.http.keepAlive="true"
systemProp.http.proxyHost=<proxy name=""> 
systemProp.http.proxyPort=8080
systemProp.http.proxyUser=<domain name="">/<username> 
</username></domain></proxy>

Но я все еще продолжаю видеть эту проблему. У меня есть еще несколько журналов. Я вижу это в STS (IDE)

Could not GET 'http://repo1.maven.org/maven2/org/spr...'. Received status code 500 from server: Internal Server Error 
Could not execute build using Gradle installation 'C:\ProgramFiles\gradle-1.4-rc-3'.

И нет, учетные данные не ошибаются. В той же настройке, с такими же значениями, Maven работает нормально. И нет, Gradle.properties также находится в правильном месте. Если я изменил значение прокси-сервера, ошибка изменится. Таким образом, инструмент определенно читает файл Gradle.properties.

6 ответов

UPDATE:

со временем, лучшее решение:

Добавить расширение wagon-http-lightweight Wagon HTTP облегченная библиотека имеет дело с ограничениями аутентификации в Maven 3 при работе с проксими NTLM.

Загрузите wagon-http-lightweight-2.2.jar из maven repo. Скопируйте wagon-http-lightweight-2.2.jar в папку% M2_HOME%/lib/ext.

Оригинальный ответ:

У меня была такая же проблема. Это обычная проблема с серверами Microsoft (ISA и т.д.). Заголовок HTTP, используемый в вашем приложении, не поддерживается для NTLM (по крайней мере, напрямую) Чтобы обойти это, я использовал "прокси-прокси". Локальный прокси-сервер, который изменяет заголовок http на лету, чтобы серверы Microsoft могли понять ваш запрос.

В основном вы отправите свой запрос локально (127.0.0.1), этот прокси-сервер изменит заголовок с помощью NTLM-совместимого запроса и перенаправит его на родительский прокси-сервер на порт 8080.

Два сценария: у вас есть привилегии администратора или нет.

Если у вас есть права администратора, вы можете установить CNTLM Он будет установлен как служба. Существует установка "auto-config", вы можете проверить вики CNTLM (порт по умолчанию: 3128)

Если у вас нет прав администратора, вы можете установить NTLM APS (хотя он довольно старый, он работает для меня) < ш> вам необходимо настроить файл server.cfg с вашим доменом NT, хостом, родительским прокси + портом, NTLM_TO_BASIC 1 (вы можете получить свой домен и хост, нажав на кнопки "windows + pause" на клавиатуре) порт по умолчанию - 5865.

Для NTLMAPS вам нужен Python (python portable не требует прав администратора и изменяет значение в 'server.bat' в соответствии с вашей установкой) и вам также нужно исправить версию на sourceforge с помощью этого патча, поскольку он имеет с фрагментированными ответами

В вашем приложении вам необходимо изменить настройки прокси-сервера следующим образом:

systemProp.http.proxyHost=127.0.0.1
systemProp.http.proxyPort=3128 or 5865 depending on which server you installed

Иногда сервер Microsoft по-прежнему блокирует запросы, и мне нужно перезапустить локальный прокси-сервер или изменить родительский прокси-адрес.


Это довольно старый вопрос, но все-таки один из первых хитов, когда googling для 'gradle' и 'ntlm proxy'. Там не так много документации об этом, но если gradle жалуется на что-то вроде

Не удалось GET 'https://jcenter.bintray.com/org/slf4j/...

и вы используете cntlm в качестве прокси-сервера, тогда эта команда может быть полезна:

gradle test -DproxySet=true -Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=3128

(предполагая значения по умолчанию для имени и порта прокси). Обратите внимание на настройки "https". Отсутствие загрузок успешно работало с этими настройками.


Мне удалось заплатить Gradle core v1.10, чтобы использовать BASIC вместо NTLM, и он работал в нашей среде.

В случае, если вы хотите попробовать, файл jar здесь

Используйте на свой страх и риск.


Gradle зависит от Apache HttpClient + jcifs для проверки подлинности NTLM.

В HttpClient 4.2.1 и 4.2.2 обнаружена ошибка, которая может вызвать проблемы: для вас есть 2 варианта.

  • Перейдите на Gradle 1.4-rc-3 или выше, которые содержат bugfix для этой проблемы.
  • Включить systemProp.http.keepAlive="true" в ваш gradle.properties файл.


Я помню, что в прошлом работал за прокси-сервером NTLM. Поскольку мы работали над * nix-блоками, мы не могли использовать прокси-сервер NTLM, поскольку в этих ОС нет поддержки. Я также не думаю, что Gradle поддерживает NTLM, но я могу ошибаться.

В любом случае, мы тогда использовали (cntlm) [http://cntlm.sourceforge.net/] прокси, и вы могли бы сделать то же самое. Просто настройте его на своем компьютере и укажите в нем параметры Gradle прокси.

РЕДАКТИРОВАТЬ. По-видимому, я ошибался. Gradle поддерживает аутентификацию NTLM, см. примечания к выпуску для 1.0-milestone-8


Увидев, что ваш репозиторий maven находится под C:\ProgramFiles, а не в типичном для записи месте, например в каталоге пользователя

%USERPROFILE%\.m2\repository || ~/.m2/repository

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

licensed under cc by-sa 3.0 with attribution.