Aby skorzystać z integracji Gradle / Artifactory dla Jenkins, potrzebuję dostępu do sieci Web z Gradle przez serwer proxy. Aby zmniejszyć możliwe przyczyny problemów, ręcznie dodaję wtyczkę Artifactory do pliku build.gradle i uruchamiam ją z wiersza poleceń:
apply {
apply from: "http://gradle.artifactoryonline.com/gradle/plugins/org/jfrog/buildinfo/build-info-extractor-gradle/1.0.1/artifactoryplugin-1.0.1.gradle"
}
Zgodnie z tym opisem w .gradle / gradle.properties w moim katalogu domowym umieściłem:
systemProp.http.proxyHost=hostname
systemProp.http.proxyPort=8080
systemProp.http.proxyUser=de\\username
systemProp.http.proxyPassword=xxx
Przy powyższej konfiguracji proxy (o której wiadomo, że działa), kończy się niepowodzeniem:
11: 33: 17.699 [ERROR] [org.gradle.BuildExceptionReporter] Przyczyna: java.io.IOException: serwer zwrócił kod odpowiedzi HTTP: 407 dla adresu URL: http://gradle.artifactoryonline.com/gradle/plugins/org/ jfrog / buildinfo / build-info-extractor-gradle / 1.0.1 / artifactoryplugin-1.0.1.gradle
Mam do wyboru dwa serwery proxy, a jeden zawsze odpowiada 407
( Wymagane uwierzytelnianie proxy ), a drugi 502
( Zła brama ), więc oczywiście używane są opcje proxyHost i proxyPort.
Ponieważ nazwa użytkownika (oparta na użytkowniku Active Directory) zawiera odwrotny ukośnik, próbowałem obu \\
i \
, ale żaden z nich nie działał. Określony użytkownik różni się od użytkownika zalogowanego na komputerze i w usłudze Active Directory. Poświadczenia tego użytkownika nie są prawidłowe dla serwera proxy, więc muszę mieć możliwość określenia innego użytkownika.
Ustawienie tych samych opcji w GUI Jenkinsa lub Artifactory działało.
źródło
Odpowiedzi:
Udoskonalenie odpowiedzi Daniela:
Konfiguracja proxy tylko HTTP
Konfiguracja proxy HTTPS
Konfiguracja serwera proxy HTTP i HTTPS
Konfiguracja proxy z użytkownikiem i hasłem
pracował dla mnie (
gradle.properties
w domu lub w reżimie projektu, kompilacja wciąż się nie udała). Dziękujemy za wskazanie w firmie Gradle problemu, który umożliwił obejście tego problemu. Zobacz dokument referencyjny pod adresem https://docs.gradle.org/current/userguide/build_environment.html#sec:accessing_the_web_via_a_proxyAktualizacja Możesz również umieścić te właściwości w
gradle-wrapper.properties
(patrz: https://stackoverflow.com/a/50492027/474034 ).źródło
~/.gradle/gradle.properties
upewnij się, że poprzedzasz jesystemProp
, na przykładsystemProp.http.proxyHost=127.0.0.1
-Dhttp.proxyHost
i upodobania) jakoJAVA_OPTS
zmienną środowiskową, aby działało.To jest moja gradle.properties, zwróć uwagę na część dotyczącą HTTPS
źródło
W moim
build.gradle
mam następujące zadanie, które używa zwykłych ustawień proxy LinuksaHTTP_PROXY
orazHTTPS_PROXY
z powłoki env:źródło
U mnie działa dodanie tej konfiguracji w pliku gradle.properties projektu, gdzie plik build.gradle to:
Gdzie: proxyUrl to adres URL serwera proxy ( http: // ..... )
proxyPort to port (zwykle 8080)
USER jest użytkownikiem mojej domeny
PASSWORD, moje hasło
W tym przypadku serwer proxy dla http i https jest taki sam
źródło
Spróbuj wykonać następujące czynności:
gradle -Dhttp.proxyHost=yourProxy -Dhttp.proxyPort=yourPort -Dhttp.proxyUser=usernameProxy -Dhttp.proxyPassword=yourPassoword
źródło
Używając bardzo prostego programu Java „Zażądaj adresu URL”, udało mi się odtworzyć problem.
http.proxyUser
ihttp.proxyPassword
wydają się być niestandardowymi, aczkolwiek popularnymi opcjami, ponieważ nie są opisane na stronie referencyjnej Java, do której link znajduje się w samouczku Gradle ; mimo że wspomina o nich podręcznik Gradle.Wygląda na to, że programy Java, które chcą obsługiwać uwierzytelnianie proxy, muszą to robić ręcznie (a udało mi się to zrobić za pomocą kodu na połączonej stronie).
Przesłałem ten problem (i poprawkę) do narzędzia do śledzenia problemów w Gradle . Zgłoszony problem GRADLE-1556 został rozwiązany w 1.0-kamień milowy-8 (luty 2012)
źródło
Sprawdź na c: \ Users \ twoja nazwa użytkownika \ .gradle \ gradle.properties:
źródło
Utwórz plik o nazwie
gradle.properties
wewnątrz folderu projektu, w którymbuild.gradle
znajduje się plik. Dodaj następujący wpisJeśli używasz DNS dla proxy, dodaj go jak
systemProp.https.proxyHost=www.proxysite.com
W przypadku adresu IP wystarczy podać adres IP bez
http://
lubhttps://
sprawdzić oficjalny dokument gradle, aby uzyskać więcej informacji i skonfigurować proxy na poziomie globalnym
źródło
Istnieją dwa sposoby korzystania z Gradle za proxy:
Dodaj argumenty w linii poleceń
(Z postu Guillaume Berche)
Dodaj te argumenty do polecenia gradle:
lub te argumenty, jeśli używasz https:
Dodaj linie w pliku konfiguracyjnym gradle
w
gradle.properties
dodaj następujące linie:(
gradle.properties
lokalizację pliku można znaleźć w oficjalnej dokumentacji https://docs.gradle.org/current/userguide/build_environment.htmlEDYCJA: jak powiedział @Joost: Mały, ale ważny szczegół, który początkowo przeoczyłem: zauważ, że rzeczywista nazwa hosta NIE zawiera
http://
części protokołu w adresie URL ...źródło
http://
części protokołu w adresie URL ...Na podstawie odpowiedzi SourceSimian; działało to na kontach użytkowników domeny Windows. Pamiętaj, że nazwa użytkownika nie zawiera domeny,
źródło
W przypadku, gdy próbuję skonfigurować serwer proxy z Android Studio Wygląd i zachowanie => Ustawienia systemowe => Serwer proxy HTTP. Ale proxy nie zadziałało, więc nie klikam proxy.
Usuwam więc wszystkie właściwości zaczynające się na przykład od systemProp - systemProp.http.nonProxyHosts = *. Local, localhost
źródło
~/.gradle/gradle.properties
. Dzięki za wskazanie tego.Aktualizacja odpowiedzi @sourcesimian i @ kunal-b, która dynamicznie ustawia nazwę użytkownika i hasło, jeśli są skonfigurowane we właściwościach systemu.
Poniżej ustawia się nazwę użytkownika i hasło, jeśli są podane, lub po prostu dodaje hosta i port, jeśli nie ustawiono nazwy użytkownika i hasła.
źródło
Jeśli jesteś za proxy i używasz eclipse, przejdź do
Window Menu --> Preferences --> General --> Network Connections
. Wybierz aktywnych dostawców jako „Ręcznie”.W sekcji Wpisy proxy kliknij HTTPS, kliknij Edytuj i dodaj hosta i port proxy. Jeśli wymagana jest nazwa użytkownika i hasło, również je podaj. U mnie zadziałało!
źródło
Jeśli ten problem z błędem HTTP 407 wystąpił tylko w wybranych pakietach, problem nie dotyczy ustawień serwera proxy i połączenia internetowego. Możesz nawet wystawić swój komputer na połączenie z Internetem za pośrednictwem NAT i nadal napotkasz ten problem. Zwykle w tym samym czasie możesz pobrać żądane pakiety w przeglądarce. Jedyne rozwiązanie, które znalazłem: usuń folder .gradle w swoim profilu (nie w projekcie). Po tej zsynchronizowaniu projektu zajmie to dużo czasu, ale przywrócenie wszystkiego.
źródło