217 votes

Configuration du proxy Gradle

J'ai besoin d'un accès web à Gradle à travers un serveur proxy pour utiliser l'intégration Gradle/Artifactory pour Jenkins. Pour réduire les causes possibles de problèmes, j'ajoute manuellement le plugin Artifactory dans build.gradle et je l'exécute en ligne de commande :

apply {
    apply from: "http://gradle.artifactoryonline.com/gradle/plugins/org/jfrog/buildinfo/build-info-extractor-gradle/1.0.1/artifactoryplugin-1.0.1.gradle"
}

Suivant este description J'ai spécifié ce qui suit dans .gradle/gradle.properties dans mon répertoire personnel :

systemProp.http.proxyHost=hostname
systemProp.http.proxyPort=8080
systemProp.http.proxyUser=de\\username
systemProp.http.proxyPassword=xxx

Avec la configuration de proxy ci-dessus (dont on sait par ailleurs qu'elle fonctionne), il échoue :

11:33:17.699 [ERROR] [org.gradle.BuildExceptionReporter] Caused by : java.io.IOException : Le serveur a renvoyé un code de réponse HTTP : 407 pour l'URL : http://gradle.artifactoryonline.com/gradle/plugins/org/jfrog/buildinfo/build-info-extractor-gradle/1.0.1/artifactoryplugin-1.0.1.gradle

J'ai le choix entre deux serveurs proxy, et l'un d'eux répond toujours par 407 ( Authentification du proxy requise ), l'autre avec 502 ( Mauvaise passerelle ), les options proxyHost et proxyPort sont évidemment utilisées.

Comme le nom de l'utilisateur (basé sur un utilisateur Active Directory) contient une barre oblique inverse, j'ai essayé les deux options suivantes \\ et \ mais aucun n'a fonctionné. L'utilisateur spécifié est différent de celui qui est connecté à la machine et à Active Directory. Les informations d'identification de cet utilisateur ne sont pas valides pour le proxy, et je dois donc pouvoir spécifier un autre utilisateur.

La définition des mêmes options dans l'interface graphique de Jenkins ou d'Artifactory a fonctionné.

260voto

Guillaume Berche Points 2056

Raffinement de la réponse de Daniel :

Configuration du proxy HTTP uniquement

gradlew -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=3128 "-Dhttp.nonProxyHosts=*.nonproxyrepos.com|localhost"

Configuration du proxy HTTPS uniquement

gradlew -Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=3129 "-Dhttp.nonProxyHosts=*.nonproxyrepos.com|localhost"

Configuration du proxy HTTP et HTTPS

gradlew -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=3128 -Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=3129 "-Dhttp.nonProxyHosts=*.nonproxyrepos.com|localhost"

Configuration du proxy avec utilisateur et mot de passe

gradlew -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=3128 - Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=3129 -Dhttps.proxyUser=user -Dhttps.proxyPassword=pass -Dhttp.proxyUser=user -Dhttp.proxyPassword=pass -Dhttp.nonProxyHosts=host1.com|host2.com

a fonctionné pour moi (avec gradle.properties dans le répertoire personnel ou dans le répertoire du projet, la construction échouait toujours). Merci d'avoir signalé le problème à gradle qui a donné cette solution de contournement. Voir la documentation de référence à https://docs.gradle.org/current/userguide/build_environment.html#sec:accessing_the_web_via_a_proxy

Mise à jour Vous pouvez également placer ces propriétés dans gradle-wrapper.properties (voir : https://stackoverflow.com/a/50492027/474034 ).

108voto

Kampau Ocu Points 851

Voici mon gradle.properties, notez bien la partie HTTPS

systemProp.http.proxyHost=127.0.0.1
systemProp.http.proxyPort=8118
systemProp.https.proxyHost=127.0.0.1
systemProp.https.proxyPort=8118

70voto

SourceSimian Points 1

Dans mon build.gradle J'ai la tâche suivante, qui utilise les paramètres habituels du proxy linux, HTTP_PROXY et HTTPS_PROXY à partir de l'environnement shell :

task setHttpProxyFromEnv {
    def map = ['HTTP_PROXY': 'http', 'HTTPS_PROXY': 'https']
    for (e in System.getenv()) {
        def key = e.key.toUpperCase()
        if (key in map) {
            def base = map[key]
            def url = e.value.toURL()
            println " - systemProp.${base}.proxy=${url.host}:${url.port}"
            System.setProperty("${base}.proxyHost", url.host.toString())
            System.setProperty("${base}.proxyPort", url.port.toString())
        }
    }
}

build.dependsOn setHttpProxyFromEnv

34voto

rtrujillor Points 585

Pour moi, cela fonctionne en ajoutant cette configuration dans le fichier gradle.properties du projet, là où se trouve le fichier build.gradle :

systemProp.http.proxyHost=proxyURL
systemProp.http.proxyPort=proxyPort
systemProp.http.proxyUser=USER
systemProp.http.proxyPassword=PASSWORD
systemProp.https.proxyHost=proxyUrl 
systemProp.https.proxyPort=proxyPort
systemProp.https.proxyUser=USER
systemProp.https.proxyPassword=PASSWORD

Où : proxyUrl est l'url du serveur proxy ( http://.... .)

proxyPort est le port (généralement 8080)

USER est l'utilisateur de mon domaine

MOT DE PASSE, mon mot de passe

Dans ce cas, le proxy pour http et https est le même

34voto

Charles Tempo Points 363

C c : \Users\your Nom d'utilisateur \.gradle\gradle.properties :

systemProp.http.proxyHost=<proxy host>
systemProp.http.proxyPort=<proxy port>
systemProp.http.proxyUser=<proxy user>
systemProp.http.proxyPassword=<proxy password>
systemProp.http.nonProxyHosts=<csv of exceptions>
systemProp.https.proxyHost=<proxy host>
systemProp.https.proxyPort=<proxy port>
systemProp.https.proxyUser=<proxy user>
systemProp.https.proxyPassword=<proxy password>
systemProp.https.nonProxyHosts=<csv of exceptions seperated by | >

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X