Ich benötige einen Webzugriff von Gradle über einen Proxyserver, um die Gradle / Artifactory-Integration für Jenkins verwenden zu können. Um mögliche Ursachen für Probleme zu reduzieren, füge ich das Artifactory-Plugin manuell in build.gradle hinzu und führe es über die Befehlszeile aus:
apply {
apply from: "http://gradle.artifactoryonline.com/gradle/plugins/org/jfrog/buildinfo/build-info-extractor-gradle/1.0.1/artifactoryplugin-1.0.1.gradle"
}
Nach dieser Beschreibung habe ich in .gradle / gradle.properties in meinem Home-Verzeichnis Folgendes angegeben:
systemProp.http.proxyHost=hostname
systemProp.http.proxyPort=8080
systemProp.http.proxyUser=de\\username
systemProp.http.proxyPassword=xxx
Mit der obigen Proxy-Konfiguration (von der sonst bekannt ist, dass sie funktioniert) schlägt dies fehl:
11: 33: 17.699 [ERROR] [org.gradle.BuildExceptionReporter] Auslöser: java.io.IOException: Server hat HTTP-Antwortcode zurückgegeben: 407 für URL: http://gradle.artifactoryonline.com/gradle/plugins/org/ jfrog / buildinfo / build-info-extractor-gradle / 1.0.1 / artifactoryplugin-1.0.1.gradle
Ich habe zwei Proxyserver zur Auswahl, und einer antwortet immer mit 407
( Proxy-Authentifizierung erforderlich ), der andere mit 502
( Bad Gateway ), daher werden offensichtlich die Optionen proxyHost und proxyPort verwendet.
Da der Benutzername (basierend auf einem Active Directory-Benutzer) einen Backslash enthält, habe ich beide \\
und beide ausprobiert \
, aber keiner hat funktioniert. Der angegebene Benutzer unterscheidet sich von dem Benutzer, der am Computer und in Active Directory angemeldet ist. Die Anmeldeinformationen dieses Benutzers sind für den Proxy nicht gültig, daher muss ich in der Lage sein, einen anderen Benutzer anzugeben.
Das Festlegen der gleichen Optionen in der Benutzeroberfläche von Jenkins oder Artifactory hat funktioniert.
quelle
Antworten:
Verfeinerung über Daniels Antwort:
Nur HTTP-Proxy-Konfiguration
Nur HTTPS-Proxy-Konfiguration
Sowohl HTTP- als auch HTTPS-Proxy-Konfiguration
Proxy-Konfiguration mit Benutzer und Passwort
arbeitete für mich (
gradle.properties
entweder in homedir oder im Projektverzeichnis schlug der Build immer noch fehl). Vielen Dank, dass Sie das Problem auf gradle hingewiesen haben, das diese Problemumgehung ermöglicht hat. Siehe Referenzdokument unter https://docs.gradle.org/current/userguide/build_environment.html#sec:accessing_the_web_via_a_proxyUpdate Sie können diese Eigenschaften auch einfügen
gradle-wrapper.properties
(siehe: https://stackoverflow.com/a/50492027/474034 ).quelle
~/.gradle/gradle.properties
stellen Sie sicher, dass Sie den Eigenschaften voranstellensystemProp
, wie zum BeispielsystemProp.http.proxyHost=127.0.0.1
-Dhttp.proxyHost
und dergleichen) alsJAVA_OPTS
Umgebungsvariable festlegen , damit es funktioniert.Dies ist meine gradle.properties, bitte beachten Sie diesen HTTPS-Teil
quelle
In meinem habe
build.gradle
ich die folgende Aufgabe, die die üblichen Linux-Proxy-Einstellungen verwendet,HTTP_PROXY
undHTTPS_PROXY
aus der Shell-Umgebung:quelle
Für mich funktioniert das Hinzufügen dieser Konfiguration in der Datei gradle.properties des Projekts, wobei die Datei build.gradle lautet:
Wobei: proxyUrl die URL des Proxyservers ist ( http: // ..... )
proxyPort ist der Port (normalerweise 8080)
USER ist mein Domain-Benutzer
PASSWORT, mein Passwort
In diesem Fall ist der Proxy für http und https identisch
quelle
Versuche Folgendes:
gradle -Dhttp.proxyHost=yourProxy -Dhttp.proxyPort=yourPort -Dhttp.proxyUser=usernameProxy -Dhttp.proxyPassword=yourPassoword
quelle
Mit einem sehr einfachen Java-Programm "URL anfordern" konnte ich das Problem replizieren.
http.proxyUser
undhttp.proxyPassword
scheinen nicht standardmäßige, wenn auch beliebte Optionen zu sein, da sie nicht auf der Java-Referenzseite beschrieben sind, die im Gradle-Tutorial verlinkt ist . obwohl das Gradle-Handbuch sie erwähnt.Es scheint, dass Java-Programme, die die Proxy-Authentifizierung unterstützen möchten, dies manuell tun müssen (und ich konnte dies mithilfe des Codes auf der verlinkten Seite tun).
Ich habe dieses Problem (und einen Fix) beim Gradle Issue Tracker eingereicht . Das angesprochene Problem GRADLE-1556 wurde in 1.0-Meilenstein-8 (Februar 2012) behoben.
quelle
Überprüfen Sie unter c: \ Benutzer \ Ihr Benutzername \ .gradle \ gradle.properties:
quelle
Erstellen Sie eine Datei mit dem Namen
gradle.properties
im Projektordner, in dem sich diebuild.gradle
Datei befindet. Fügen Sie den folgenden Eintrag hinzuWenn Sie DNS als Proxy verwenden, fügen Sie es wie folgt hinzu
systemProp.https.proxyHost=www.proxysite.com
Für IP geben Sie einfach die IP mit aus
http://
oderhttps://
prüfen gradle offiziellen doc , um weitere Informationen und Proxy auf globaler Ebene einrichten
quelle
Es gibt zwei Möglichkeiten, Gradle hinter einem Proxy zu verwenden:
Fügen Sie Argumente in der Befehlszeile hinzu
(Aus Guillaume Berches Beitrag)
Fügen Sie diese Argumente in Ihren gradle-Befehl ein:
oder diese Argumente, wenn Sie https verwenden:
Fügen Sie Zeilen in die Gradle-Konfigurationsdatei ein
in
gradle.properties
den folgenden Zeilen:(
gradle.properties
Informationen zum Speicherort der Datei finden Sie in der offiziellen Dokumentation unter https://docs.gradle.org/current/userguide/build_environment.htmlBEARBEITEN: wie von @Joost gesagt: Ein kleines, aber wichtiges Detail, das ich anfangs übersehen habe: Beachten Sie, dass der tatsächliche Hostname KEINEN
http://
Protokollteil der URL enthält ...quelle
http://
Protokollteil der URL enthält ...Basierend auf der Antwort von SourceSimian; Dies funktionierte bei Windows-Domänenbenutzerkonten. Notiere dass der Benutzernamen keine Domain enthalten ist.
quelle
Ein Update zu @sourcesimian und der Antwort @ kunal-b, bei dem der Benutzername und das Kennwort dynamisch festgelegt werden, wenn dies in den Systemeigenschaften konfiguriert ist.
Im Folgenden werden der Benutzername und das Kennwort festgelegt, sofern angegeben, oder der Host und der Port werden hinzugefügt, wenn kein Benutzername und kein Kennwort festgelegt sind.
quelle
Für den Fall, dass ich versuche, einen Proxy über Android Studio einzurichten. Aussehen und Verhalten => Systemeinstellungen => HTTP-Proxy. Aber der Proxy hat nicht funktioniert, also klicke ich auf keinen Proxy.
Also entferne ich alle Eigenschaften, die mit systemProp beginnen, zum Beispiel - systemProp.http.nonProxyHosts = *. Local, localhost
quelle
~/.gradle/gradle.properties
. Vielen Dank für den Hinweis.Wenn Sie sich hinter einem Proxy befinden und Eclipse verwenden, gehen Sie zu
Window Menu --> Preferences --> General --> Network Connections
. Wählen Sie die aktiven Anbieter als "Manuell" aus.Klicken Sie im Abschnitt Proxy-Einträge auf HTTPS, klicken Sie auf Bearbeiten und fügen Sie Proxy-Host und -Port hinzu. Wenn Benutzername und Passwort erforderlich sind, geben Sie dies ebenfalls an. Es hat bei mir funktioniert!
quelle
Wenn dieses Problem mit dem HTTP-Fehler 407 nur bei ausgewählten Paketen aufgetreten ist, liegt das Problem nicht in der Proxy-Einstellung und der Internetverbindung. Sie können Ihren PC sogar über NAT dem Internet aussetzen und sind dennoch mit diesem Problem konfrontiert. In der Regel können Sie gleichzeitig die gewünschten Pakete im Browser herunterladen. Die einzige Lösung, die ich finde: Löschen Sie den .gradle-Ordner in Ihrem Profil (nicht im Projekt). Nach dieser Synchronisierung des Projekts dauert es lange, aber alles wird wiederhergestellt.
quelle