Gradlew behind a proxy
我有一个来自Gaelyk(称为Bloogie)的样本,它正在使用gradlew。
我是代理人。
我阅读了gradle文档,发现了这一点:
gradle.properties
1 2 3 4 | systemProp.http.proxyHost=www.somehost.org systemProp.http.proxyPort=8080 systemProp.http.proxyUser=userid systemProp.http.proxyPassword=password |
但是我不知道如何将该信息放入包装器gradlew中。 任何想法?
您要做的就是创建一个名为
如果在用户主目录或项目目录中找到,Gradle(包装器也!!)会自动拾取
有关更多信息,请阅读Gradle用户指南,特别是在12.3节:通过代理访问Web上
如果您需要在代理后面进行https访问,请考虑为systemProp.https定义相同的属性集。
1 2 | systemProp.https.proxyHost=www.somehost.org systemProp.https.proxyPort=8080 |
有关更多信息,请参阅使用VPN和代理后面的crashlytics不能构建Android应用。
在提示行中使用此命令:
1 | gradle -Dhttp.proxyHost=*** -Dhttp.proxyPort=*** -Dhttp.proxyUser=**** -Dhttp.proxyPassword=**** |
在这里工作!
如果要通过代理下载包装器,则将以下内容添加到
如果要全局设置这些属性,则将其添加到
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | ## 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 |
在设置https代理之前,我无法使proxy属性起作用:
1 2 | systemProp.https.proxyHost=www.somehost.org systemProp.https.proxyPort=8080 |
但是,我必须使用http属性作为用户名和密码:
1 2 | systemProp.http.proxyUser=userid systemProp.http.proxyPassword=password |
Gradle包装器的此问题已通过Gradle 1.0-milestone-8修复。试一试。
为了增加更多细微差别,就我而言,当我在USER_HOME / .gradle和项目根目录中都有多个gradle.properties文件时,遇到以下身份验证所需的407错误,如下所示:
这在USER_HOME / .gradle下的gradle.properties文件中导致我的
不确定确切原因,但是当我在项目根目录中删除一个gradle.properties并将文件保留在USER_HOME / .gradle中时,我的情况已解决。
在此JDK更新之后,我无法在代理后面再次使用gradlew。
最后,我发现默认情况下,JDK已禁用HTTPS隧道的基本身份验证。
因此,除了代理设置外,我还必须为gradle.properties添加此属性。
1 | systemProp.jdk.http.auth.tunneling.disabledSchemes="" |
希望对遇到同样问题的人有所帮助
我有同样的问题,做的第一件事是创建gradle.properties。我没有这样的文件,因此应使用以下内容创建它:
1 2 3 4 5 6 | systemProp.http.proxyHost=proxy systemProp.http.proxyPort=port systemProp.http.nonProxyHosts=domainname|localhost systemProp.https.proxyHost=proxy systemProp.https.proxyPort=port systemProp.https.nonProxyHosts=domainname|localhost |
当我添加它们时,gradlew命令在公司代理后面正常工作。我希望它会有用。
起初这对我不起作用。
就我而言,我创建了我认为是USER_HOME / .gradle / gradle.properties文件的文件,但最终创建了gradle.properties.txt文件。
在终端窗口中,ls命令将显示.gradle文件夹中的完整文件名。
然后mv gradle.properties.txt gradle.properties
我发现从gradle.properties读取属性可能不正确。如果行包含尾部空白,则gradle无法找到代理。检查您的代理文件,并在行尾剪切空白。可以帮忙
设置SSl代理对我有用。
1 2 3 4 | systemProp.http.proxyHost=proxy.yourproxysite.com systemProp.http.proxyPort=8080 systemProp.https.proxyHost=proxy.yourproxysite.com systemProp.https.proxyPort=8080 |
使用Cordova项目时,我遇到相同的代理问题。
要解决此问题,我在我的Cordova项目(
1 2 3 4 | systemProp.http.proxyHost=proxy.yourproxysite.com systemProp.http.proxyPort=8080 systemProp.http.proxyUser=yourusername systemProp.http.proxyPassword=password |
经过很多努力并把我的头撞在墙上之后,因为我的系统上没有使用代理:事实证明,我的** Android Emulator实例**本身正在通过Android Emulator秘密/无声地为我设置代理> 设置>代理,并已在几周前使用这些设置来解决Expo的问题。
如果有人遇到此问题,请确保您检查100%,以查看是否确实没有通过以下方式使用自定义代理设置:
An excerpted answer from the linked thread below. It shows how to do
this more programtically. Hope it helps
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 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()) } } } |
看到这个线程更多
1 2 | systemProp.http.proxyUser=userid systemProp.http.proxyPassword=password |
与https一样......