Gradlew detrás de un proxy
gaelyk (16)
Tengo una muestra de Gaelyk (llamada Bloogie) y está usando gradlew.
Estoy detrás de un proxy.
He leído documentos de Gradle y he encontrado esto:
gradle.properties
systemProp.http.proxyHost=www.somehost.org
systemProp.http.proxyPort=8080
systemProp.http.proxyUser=userid
systemProp.http.proxyPassword=password
Pero no tengo ni idea de cómo poner esta información en el contenedor gradlew. ¿Alguna idea?
Una respuesta extractada del hilo vinculado a continuación. Muestra cómo hacer esto más programáticamente. Espero eso ayude
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())
}
}
}
Agregue lo siguiente en su archivo gradle.properties
y en su archivo gradle/wrapper/gradle-wrapper.properties
si está descargando el contenedor sobre un proxy
Si desea establecer estas propiedades globalmente, agréguelo en el USER_HOME/.gradle/gradle.properties file
## Proxy setup
systemProp.proxySet="true"
systemProp.http.keepAlive="true"
systemProp.http.proxyHost=host
systemProp.http.proxyPort=port
systemProp.http.proxyUser=username
systemProp.http.proxyPassword=password
systemProp.http.nonProxyHosts=local.net|some.host.com
systemProp.https.keepAlive="true"
systemProp.https.proxyHost=host
systemProp.https.proxyPort=port
systemProp.https.proxyUser=username
systemProp.https.proxyPassword=password
systemProp.https.nonProxyHosts=local.net|some.host.com
## end of proxy setup
Configurar el proxy SSl funcionó para mí.
systemProp.http.proxyHost=proxy.yourproxysite.com
systemProp.http.proxyPort=8080
systemProp.https.proxyHost=proxy.yourproxysite.com
systemProp.https.proxyPort=8080
Después de this actualización de JDK, no pude volver a utilizar gradlew detrás de un proxy. y finalmente encontré que un JDK ha desactivado la autenticación básica para la creación de túneles HTTPS de forma predeterminada. así que tengo que agregar esta propiedad para gradle.properties además de la configuración del proxy
systemProp.jdk.http.auth.tunneling.disabledSchemes=""
Espero que sea útil para alguien que tiene el mismo problema
Después de mucho luchar con esto y golpear mi cabeza contra la pared, porque nada en mi sistema usaba un proxy: resultó que mi ** instancia de Android Emulator ** en sí misma estaba configurando un proxy secretamente / silenciosamente a través de Android Emulator> Configuración> Proxy y había aplicado estas configuraciones cuando jugaba con ella semanas antes para solucionar un problema con Expo.
Si alguien tiene este problema, asegúrese de verificar 100% para ver si realmente no se está utilizando ninguna configuración de proxy personalizada a través de: ./gradlew installDebug --info --debug --stacktrace
y buscando proxyHost
en el resultado del registro para asegurarse de esta. Puede ser tu emulador.
Este problema con Gradle Wrapper se ha solucionado con Gradle 1.0-milestone-8. Dale un tiro.
Esto no estaba funcionando para mí al principio.
En mi caso, había creado lo que creía que era un archivo USER_HOME / .gradle / gradle.properties pero terminé con un archivo gradle.properties.txt.
Desde la ventana de la terminal, un comando ls mostrará los nombres completos de los archivos en la carpeta .gradle.
Luego mv gradle.properties.txt gradle.properties
No pude hacer funcionar la propiedad proxy hasta que configuré el proxy https:
systemProp.https.proxyHost=www.somehost.org
systemProp.https.proxyPort=8080
Sin embargo, tuve que usar la propiedad http para el nombre de usuario y la contraseña:
systemProp.http.proxyUser=userid
systemProp.http.proxyPassword=password
Para agregar más matices, en mi caso, cuando tengo varios archivos gradle.properties en USER_HOME / .gradle y en la raíz del proyecto, encuentro el error 407 requerido por la autenticación, con el siguiente registro:
CONNECT refused by proxy: HTTP/1.1 407 authenticationrequired
Esto causó mi systemProp.https.proxyPassword
y systemProp.http.proxyPassword
en blanco en el archivo gradle.properties en USER_HOME / .gradle, mientras que el archivo gradle.properties en la raíz del proyecto permaneció como información de contraseña.
No estoy seguro de la razón exacta, pero cuando elimino un gradle.properties en la raíz del proyecto y guardo el archivo en USER_HOME / .gradle, mi caso se resuelve.
Se descubrió que la lectura de propiedades de gradle.properties puede ser incorrecta. En caso de que la línea contenga un espacio en blanco en el camino, gradle no puede encontrar el proxy. verifica tu archivo proxy y corta espacio en blanco al final de la línea. Puede ser de ayuda
Si necesita acceso https detrás de un proxy, considere definir también el mismo conjunto de propiedades para systemProp.https .
systemProp.https.proxyHost=www.somehost.org
systemProp.https.proxyPort=8080
Consulte No se puede crear la aplicación de Android utilizando crashlytics detrás de VPN y proxy para obtener más información.
Tengo el mismo problema de proxy cuando trabajo con el proyecto Cordova.
Para solucionar el problema, he creado un nuevo archivo gradle.properties
en la carpeta de android
de mi proyecto Cordova ( hello/platforms/android
) y agregué el código de su pregunta
systemProp.http.proxyHost=proxy.yourproxysite.com
systemProp.http.proxyPort=8080
systemProp.http.proxyUser=yourusername
systemProp.http.proxyPassword=password
Todo lo que tiene que hacer es crear un archivo llamado gradle.properties
(con las propiedades que mencionó anteriormente) y colocarlo en el directorio de inicio de usuario de Gradle (que por defecto es USER_HOME/.gradle
) O en su directorio de proyecto.
¡Gradle (el contenedor también!) Recoge automáticamente los archivos gradle.properties
si se encuentran en el directorio de inicio del usuario o en los directorios del proyecto.
Para obtener más información, lea la guía del usuario de Gradle , especialmente en la sección 12.3: Acceso a la web a través de un proxy
Tuve el mismo problema y lo primero que hice fue crear gradle.properties. No tenía ese archivo, así que debería crearlo con el siguiente contenido:
systemProp.https.proxyHost=proxy
systemProp.https.proxyPort=port
systemProp.https.nonProxyHosts=domainname|localhost
systemProp.https.proxyHost=proxy
systemProp.https.proxyPort=port
systemProp.https.nonProxyHosts=domainname|localhost
Cuando los agregué, el comando gardlew funciona correctamente detrás del proxy corporativo. Espero que pueda ser útil.
Use esto en la línea de solicitud:
gradle -Dhttp.proxyHost=*** -Dhttp.proxyPort=*** -Dhttp.proxyUser=**** -Dhttp.proxyPassword=****
¡Funciona aquí!
systemProp.http.proxyUser=userId
systemProp.http.proxyPassword=password
lo mismo con https ......