我有一个来自Gaelyk(称为Bloogie)的样本,它正在使用gradlew。
我支持代理。
我读过gradle docs并发现了这个:
gradle.properties
systemProp.http.proxyHost=www.somehost.org
systemProp.http.proxyPort=8080
systemProp.http.proxyUser=userid
systemProp.http.proxyPassword=password
但我不知道如何将这些信息放入包装器gradlew中。有什么想法吗?
答案 0 :(得分:62)
您所要做的就是创建一个名为gradle.properties
的文件(包含您上面提到的属性)并将其放在您的gradle用户主目录(默认为USER_HOME/.gradle
)或项目中目录。
Gradle(包装器也是!!!)会自动选择gradle.properties
个文件。
有关详情,请参阅Gradle user guide,尤其是第12.3节:Accessing the web via a proxy
答案 1 :(得分:39)
如果您需要代理后面的 https访问,请考虑为 systemProp.https 定义同一组属性。
systemProp.https.proxyHost=www.somehost.org
systemProp.https.proxyPort=8080
有关详细信息,请参阅Can't build Android app using crashlytics behind VPN and proxy。
答案 2 :(得分:19)
在提示行中使用:
gradle -Dhttp.proxyHost=*** -Dhttp.proxyPort=*** -Dhttp.proxyUser=**** -Dhttp.proxyPassword=****
在这里工作!
答案 3 :(得分:13)
如果您通过代理下载包装器,请在gradle.properties
文件和gradle/wrapper/gradle-wrapper.properties
文件中添加以下内容
如果要全局设置这些属性,请将其添加到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
答案 4 :(得分:9)
在设置https代理之前,我无法使用代理属性:
systemProp.https.proxyHost=www.somehost.org
systemProp.https.proxyPort=8080
但是我必须使用http属性作为用户名和密码:
systemProp.http.proxyUser=userid
systemProp.http.proxyPassword=password
答案 5 :(得分:6)
使用Gradle 1.0-milestone-8修复了Gradle Wrapper的这个问题。试一试。
答案 6 :(得分:3)
为了添加更多细微差别,对于我的情况,当我在USER_HOME / .gradle和项目根目录中都有多个 gradle.properties文件时,我遇到了authenticationrequired 407错误,并带有以下报告:
CONNECT refused by proxy: HTTP/1.1 407 authenticationrequired
这导致我在USER_HOME / .gradle下的gradle.properties文件中显示systemProp.https.proxyPassword
和systemProp.http.proxyPassword
空白,而项目下的gradle.properties文件root仍然是密码信息。
不确定原因,但是当我删除项目根目录中的一个gradle.properties并将文件保存在USER_HOME / .gradle中时,我的案例就解决了。
答案 7 :(得分:2)
我有同样的问题,我做的第一件事就是创建gradle.properties。我没有文件,所以我应该用以下内容创建它:
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命令在公司代理后面正常工作。我希望它有用。
答案 8 :(得分:1)
我发现从gradle.properties读取属性可能不正确。如果行包含跟踪空白,则gradle无法找到代理。检查您的代理文件并在行尾剪切空格。可以帮忙
答案 9 :(得分:1)
起初这对我不起作用 在我的例子中,我创建了我认为是USER_HOME / .gradle / gradle.properties文件但最终得到了gradle.properties.txt文件。
在终端窗口中,ls命令将在.gradle文件夹中显示完整的文件名。
然后mv gradle.properties.txt gradle.properties
答案 10 :(得分:1)
在this JDK更新之后,我再也无法在代理后面使用gradlew。 最后我发现JDK默认禁用了HTTPS隧道的基本身份验证。 所以我必须为gradle.properties添加此属性以及代理设置
systemProp.jdk.http.auth.tunneling.disabledSchemes=""
我希望对那些挣不起同样问题的人有所帮助
答案 11 :(得分:0)
使用Cordova项目时,我遇到了相同的代理问题。
要解决此问题,我在Cordova项目的gradle.properties
文件夹下创建了一个新的android
文件(hello/platforms/android
),并添加了您问题中的代码
systemProp.http.proxyHost=proxy.yourproxysite.com
systemProp.http.proxyPort=8080
systemProp.http.proxyUser=yourusername
systemProp.http.proxyPassword=password
答案 12 :(得分:0)
设置SSl代理对我有用。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<servlet>
<servlet-name>FileEditServlet</servlet-name>
<servlet-class>servlet.FileEditServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FileEditServlet</servlet-name>
<url-pattern>/FES</url-pattern>
</servlet-mapping>
</web-app>
答案 13 :(得分:0)
以下链接主题的摘录答案。它显示了如何做 这更具有计划性。希望它有所帮助
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())
}
}
}
答案 14 :(得分:0)
经过多次努力并将我的头撞在墙上,因为我系统上的没有使用代理:事实证明我的** Android Emulator实例**本身是秘密/通过Android Emulator静默设置代理&gt;设置&gt;代理并在几周前使用这些设置应用这些设置,以解决世博会的问题。
如果有人遇到此问题,请确保通过以下方式检查100%是否确实没有使用自定义代理设置:./gradlew installDebug --info --debug --stacktrace
并在日志输出中搜索proxyHost
以确保这个。它可能是你的模拟器。
答案 15 :(得分:-3)
systemProp.http.proxyUser=userId
systemProp.http.proxyPassword=password
与https相同......