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é.

4voto

Cosmo Dai Points 101

Modifiez votre ~/.gradle/gradle.properties puis ajoutez ce qui suit :

org.gradle.jvmargs=-DsocksProxyHost\=127.0.0.1 -DsocksProxyPort\=1080 -DhttpProxyHost\=127.0.0.1 -DhttpProxyPort\=1081 -DhttpsProxyHost\=127.0.0.1 -DhttpsProxyPort\=1081
  • DsocksProxyHost est l'hôte du proxy socks5
  • DhttpProxyHost est l'hôte du proxy http
  • DhttpsProxyHost est l'hôte du proxy https

Cela a fonctionné pour moi.

2voto

Anirban Points 2119

Dans ce cas, j'ai essayé de configurer le proxy à partir d'Android studio Appearance & Behaviour => System Settings => HTTP Proxy. Mais le proxy n'a pas fonctionné donc je clique sur pas de proxy.

Vérification PAS DE PROXY ne supprimera pas l'ensemble de procurations gradle.properties(Global). Vous devez le supprimer manuellement.

Je supprime donc toutes les propriétés commençant par systèmeProp par exemple - systemProp.http.nonProxyHosts=*.local, localhost

1voto

Norbert Points 66

Une mise à jour de @sourcesimian 's et @kunal-b's qui définit dynamiquement le nom d'utilisateur et le mot de passe s'ils sont configurés dans les propriétés du système.

La procédure suivante définit le nom d'utilisateur et le mot de passe s'ils sont fournis ou ajoute simplement l'hôte et le port si aucun nom d'utilisateur ni mot de passe n'est défini.

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]
            //Get proxyHost,port, username, and password from http system properties 
            // in the format http://username:password@proxyhost:proxyport
            def (val1,val2) = e.value.tokenize( '@' )
            def (val3,val4) = val1.tokenize( '//' )
            def(userName, password) = val4.tokenize(':')
            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())
            System.setProperty("${base}.proxyUser", userName.toString())
            System.setProperty("${base}.proxyPassword", password.toString())
        }
    }
}

1voto

user3593084 Points 42

Dans les fichiers de configuration .kts de kotlin, les propriétés doivent être définies comme suit :

extra["systemProp.http.proxyHost"]="127.0.0.1"
extra["systemProp.http.proxyPort"]="12345"

0voto

Almaz Points 465

Si ce problème d'erreur HTTP 407 ne concerne que les paquets sélectionnés, le problème n'est pas lié à la configuration du proxy ni à la connexion internet. Vous pouvez même exposer votre PC à l'internet par l'intermédiaire d'un NAT et vous serez toujours confronté à ce problème. En général, vous pouvez télécharger les paquets souhaités dans le navigateur. La seule solution que j'ai trouvée : supprimer le dossier .gradle dans votre profil (pas dans le projet). Après cela, synchronisez le projet, cela prendra beaucoup de temps mais tout sera restauré.

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