property para org home configurar java proxy active-directory windows-server-2008 gradle

java - para - project property gradle



ConfiguraciĆ³n de proxy de Gradle (13)

Basado en la respuesta de SourceSimian; esto funcionó en las cuentas de usuario de dominio de Windows. Tenga en cuenta que el nombre de usuario no tiene dominio incluido,

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()) System.setProperty("${base}.proxyUser", "Username") System.setProperty("${base}.proxyPassword", "Password") } } } build.dependsOn setHttpProxyFromEnv

Necesito acceso web desde Gradle a través de un servidor proxy para usar la integración de Gradle / Artifactory para Jenkins. Para reducir las posibles causas de problemas, agrego manualmente el complemento Artifactory en build.gradle y lo ejecuto desde la línea de comandos:

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

Siguiendo this descripción, especifiqué lo siguiente en .gradle / gradle.properties en mi directorio principal:

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

Con la configuración de proxy anterior (que también se sabe que funciona), falla:

11: 33: 17.699 [ERROR] [org.gradle.BuildExceptionReporter] Causado por: java.io.IOException: El servidor devolvió el código de respuesta HTTP: 407 para URL: http://gradle.artifactoryonline.com/gradle/plugins/org/jfrog/buildinfo/build-info-extractor-gradle/1.0.1/artifactoryplugin-1.0.1.gradle

Tengo dos servidores proxy para elegir, uno siempre responde con 407 (se requiere autenticación proxy ) y el otro con 502 ( puerta de enlace incorrecta ), así que, obviamente, se usan las opciones proxyHost y proxyPort.

Como el nombre de usuario (basado en un usuario de Active Directory) contiene una barra invertida, probé // y / , pero ninguno funcionó. El usuario especificado es diferente del usuario que está conectado a la máquina y a Active Directory. Las credenciales de este usuario no son válidas para el proxy, por lo que debo poder especificar un usuario diferente.

Establecer las mismas opciones en la GUI de Jenkins o Artifactory funcionó.


Cree un archivo llamado gradle.properties dentro de la carpeta del proyecto donde está presente el archivo build.gradle . Agregue la siguiente entrada

systemProp.http.proxyHost=proxy_url systemProp.http.proxyPort=proxy_port systemProp.http.proxyUser=USER systemProp.http.proxyPassword=PWD systemProp.https.proxyHost=proxy_url systemProp.https.proxyPort=proxy_port systemProp.https.proxyUser=USER systemProp.https.proxyPassword=PWD

Si está utilizando DNS para proxy, agréguelo como systemProp.https.proxyHost=www.proxysite.com

Para IP simplemente especifique la IP sin http:// o https://
Consulte el docs.gradle.org/current/userguide/… para obtener más información y configurar el proxy a nivel mundial.


En caso de que trate de configurar el proxy desde el estudio de Android Apariencia y comportamiento => Configuración del sistema => HTTP Proxy. Pero el proxy no funcionó, así que no hago clic en ningún proxy.

Si marca NO PROXY no eliminará la configuración del proxy de gradle.properties (Global). Debes eliminarlo manualmente.

Así que elimino todas las propiedades comenzando con systemProp por ejemplo - systemProp.http.nonProxyHosts = *. Local, localhost


En mi build.gradle tengo la siguiente tarea, que usa la configuración usual de proxy de linux, HTTP_PROXY y HTTPS_PROXY , desde el env del 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


Este es mi gradle.properties, tenga en cuenta la porción de HTTPS

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


Hay 2 formas de usar Gradle detrás de un proxy:

Agregar argumentos en línea de comando

(De la publicación de Guillaume Berche)

Agregue estos argumentos en su comando gradle:

-Dhttp.proxyHost=your_proxy_http_host -Dhttp.proxyPort=your_proxy_http_port

o estos argumentos si está usando https:

-Dhttps.proxyHost=your_proxy_https_host -Dhttps.proxyPort=your_proxy_https_port

Agregue líneas en el archivo de configuración gradle

en gradle.properties agrega las siguientes líneas:

systemProp.http.proxyHost=your_proxy_http_host systemProp.http.proxyPort=your_proxy_http_port systemProp.https.proxyHost=your_proxy_https_host systemProp.https.proxyPort=your_proxy_https_port

(Para la ubicación del archivo gradle.properties , consulte la documentación oficial https://docs.gradle.org/current/userguide/build_environment.html


Para mí, trabaja agregando esta configuración en el archivo gradle.properties del proyecto, donde el archivo build.gradle es:

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

Donde: proxyUrl es la url del servidor proxy ( http: // ..... )

proxyPort es el puerto (generalmente 8080)

USER es mi usuario de dominio

CONTRASEÑA, mi contraseña

En este caso, el proxy para http y https es el mismo


Pruebe lo siguiente:

gradle -Dhttp.proxyHost=yourProxy -Dhttp.proxyPort=yourPort -Dhttp.proxyUser=usernameProxy -Dhttp.proxyPassword=yourPassoword


Refinamiento sobre la respuesta de Daniel:

Configuración Proxy HTTP solamente

gradlew -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=3128

Configuración Proxy solo HTTPS

gradlew -Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=3129

Configuración de proxy HTTP y HTTPS

gradlew -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=3128 -Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=3129

funcionó para mí (con grade.properties en homedir o projet dir, build aún estaba fallando). Gracias por señalar el problema en gradle que dio esta solución.


Si está detrás del proxy y usa eclipse, vaya a Window Menu --> Preferences --> General --> Network Connections . Seleccione los proveedores activos como ''Manual''.

En la sección de entradas de Proxy, haga clic en HTTPS, haga clic en Editar y agregue el puerto y host del proxy. Si el nombre de usuario y la contraseña son obligatorios, délos también. ¡Funcionó para mí!


Si este problema con el error HTTP 407 sucedió solo con los paquetes seleccionados, entonces el problema no está en la configuración del proxy y la conexión a Internet. Incluso puede exponer su PC a Internet a través de NAT y todavía se enfrentará a este problema. Normalmente, al mismo tiempo, puede descargar los paquetes deseados en el navegador. La única solución que encuentro es eliminar la carpeta .gradle en su perfil (no en el proyecto). Después de sincronizar el proyecto, tomará mucho tiempo pero restaurará todo.


Una actualización de la de y que establece dinámicamente el nombre de usuario y la contraseña si están configurados en las propiedades del sistema.

A continuación, se establece el nombre de usuario y la contraseña si se proporcionan o simplemente se agrega el host y el puerto si no se establece ningún nombre de usuario y contraseña.

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()) } } }


Usando un programa Java "Request a URL" muy simple, pude replicar el problema.

http.proxyUser y http.proxyPassword parecen ser opciones no estándar, aunque populares, ya que no se describen en la página de referencia de Java vinculada desde el tutorial de Gradle ; a pesar de que el manual de Gradle los menciona.

Parece que los programas Java que desean admitir la autenticación por proxy deben hacerlo manualmente (y pude hacerlo usando el código en la página vinculada).

Envié este problema (y una solución) al rastreador de problemas de Gradle . El problema planteado GRADLE-1556 se resolvió en 1.0-milestone-8 (Feb 2012)