56

我有一个来自 Gaelyk(称为 Bloogie)的样本,它正在使用 gradlew。

我在代理后面。

我已经阅读了 gradle 文档并发现了这个:

gradle.properties

systemProp.http.proxyHost=www.somehost.org
systemProp.http.proxyPort=8080
systemProp.http.proxyUser=userid
systemProp.http.proxyPassword=password

但我不知道如何将此信息放入包装器 gradlew 中。任何想法?

4

17 回答 17

74

您所要做的就是创建一个名为gradle.properties(具有您上面提到的属性)的文件,并将其放在您的 gradle 用户主目录(默认为USER_HOME/.gradle)或您的项目目录中。

gradle.properties如果在用户主目录或项目目录中找到文件,Gradle(也是包装器!!!)会自动获取文件。

有关更多信息,请阅读Gradle 用户指南,尤其是第 12.3 节:通过代理访问网络

于 2012-01-24T03:09:03.167 回答
46

如果您需要在代理后进行https 访问,请考虑为systemProp.https定义相同的属性集。

systemProp.https.proxyHost=www.somehost.org
systemProp.https.proxyPort=8080

有关详细信息,请参阅无法使用 VPN 和代理后面的 crashlytics 构建 Android 应用程序

于 2014-03-03T09:39:39.373 回答
21

在提示行中使用它:

gradle -Dhttp.proxyHost=***  -Dhttp.proxyPort=*** -Dhttp.proxyUser=**** -Dhttp.proxyPassword=****

在这里工作!

于 2014-12-15T18:58:58.030 回答
20

如果您通过代理下载包装器,请在您的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
于 2017-02-27T16:37:29.583 回答
9

在设置 https 代理之前,我无法让代理属性工作:

systemProp.https.proxyHost=www.somehost.org
systemProp.https.proxyPort=8080

但是我必须使用 http 属性作为用户名和密码:

systemProp.http.proxyUser=userid
systemProp.http.proxyPassword=password
于 2014-12-29T10:01:41.967 回答
6

Gradle Wrapper 的这个问题已在 Gradle 1.0-milestone-8 中得到修复。试一试。

于 2012-02-26T15:48:50.073 回答
5

JDK 更新之后,我无法再次在代理后面使用 gradlew。最后我发现JDK默认禁用了HTTPS隧道的基本身份验证。所以除了代理设置之外,我还必须为 gradle.properties 添加这个属性

systemProp.jdk.http.auth.tunneling.disabledSchemes=""

我希望它对遇到同样问题的人有所帮助

于 2018-02-20T04:44:06.303 回答
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,而项目根目录下的 gradle.properties 文件仍然保留密码信息。systemProp.http.proxyPassword

不确定确切的原因,但是当我在项目根目录中删除一个 gradle.properties 并将文件保存在 USER_HOME/.gradle 中时,我的情况就解决了。

于 2018-04-24T06:30:42.310 回答
3

我有同样的问题,我做的第一件事就是创建 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 命令在公司代理后面正常工作。我希望它有用。

于 2017-09-19T11:34:17.487 回答
2

我发现从 gradle.properties 读取属性可能不正确。如果行包含尾随空格,gradle 找不到代理。检查您的代理文件并在行尾剪切空格。可以帮忙

于 2015-11-25T08:15:13.120 回答
1

起初这对我不起作用。
就我而言,我创建了一个我认为是 USER_HOME/.gradle/gradle.properties 文件,但最终得到了一个 gradle.properties.txt 文件。

在终端窗口中, ls 命令将显示 .gradle 文件夹中的完整文件名。

然后 mv gradle.properties.txt gradle.properties

于 2017-11-22T17:48:23.450 回答
0

我在使用 Cordova 项目时遇到了同样的代理问题。

为了解决这个问题,我在我的 Cordova 项目 () 的文件夹gradle.properties下创建了一个新文件,并添加了您问题中的代码androidhello/platforms/android

systemProp.http.proxyHost=proxy.yourproxysite.com
systemProp.http.proxyPort=8080
systemProp.http.proxyUser=yourusername
systemProp.http.proxyPassword=password
于 2017-01-06T11:00:57.133 回答
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())
        }
    }
}

有关更多信息,请参阅此线程

于 2018-03-26T18:26:55.413 回答
0

当您的 gradle 存档镜像在防火墙后面时(如我的..),以下适用:

出于某种原因,我需要这两行:

gradle.properties:

systemProp.http.nonProxyHosts=*.localserver.co
systemProp.https.nonProxyHosts=*.localserver.co

即使我的下载行以 开头https,如下所示:

gradle-wrapper.properties:

distributionUrl=https\://s.localserver.co/gradle-7.0.1-bin.zip

它没有以任何其他方式工作......除了只有在我使用 export JAVA_OPTS=-Dhttp.nonProxyHosts=localserver.co|etc.
即使我的环境变量no_proxy已经正确设置,如果没有上述属性中的两个值,它也无法工作。

于 2021-09-02T04:18:09.980 回答
0

设置 Ssl 代理对我有用。

systemProp.http.proxyHost=proxy.yourproxysite.com
systemProp.http.proxyPort=8080
systemProp.https.proxyHost=proxy.yourproxysite.com
systemProp.https.proxyPort=8080
于 2017-02-08T11:46:49.477 回答
0

在为此苦苦挣扎并将我的头撞到墙上后,因为我的系统上没有任何东西使用代理:事实证明,我的** Android Emulator 实例** 本身正在通过 Android Emulator 秘密/默默地为我设置代理>设置 > 代理,并在几周前使用它时应用了这些设置,以解决 Expo 的问题。

如果有人遇到此问题,请确保检查 100% 以查看是否确实没有通过以下方式使用自定义代理设置: ./gradlew installDebug --info --debug --stacktrace并在proxyHost日志输出中搜索以确保这一点。它可能是你的模拟器。

于 2018-05-21T15:44:15.150 回答
-3
systemProp.http.proxyUser=userId
systemProp.http.proxyPassword=password

和https一样......

于 2016-05-23T23:54:26.483 回答