Gradle代理configuration

我需要从Gradle通过代理服务器访问Web以使用Jenkins的Gradle / Artifactory集成。 为了减less问题的可能原因,我手动添加Artifactory插件build.gradle并从命令行运行它:

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

在这个描述之后,我在我的主目录中的.gradle / gradle.properties中指定了以下内容:

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

通过上面的代理configuration(这是知道的工作),它失败了:

11:33:17.699 [错误] [org.gradle.BuildExceptionReporter]导致:java.io.IOException:服务器返回的HTTP响应代码:407为URL: http ://gradle.artifactoryonline.com/gradle/plugins/org/ jfrog / buildinfo / buildinfo-提取-gradle这个/ 1.0.1 / artifactoryplugin-1.0.1.gradle

我有两个代理服务器可供select,一个总是响应407代理身份validation要求 ),另一个502坏网关 ),很显然,proxyHost和proxyPort选项被使用。

由于用户名(基于Active Directory用户)包含反斜杠,我尝试了\\\ ,但都没有工作。 指定的用户与login到计算机和Active Directory的用户不同。 此用户的凭据无效的代理,所以我需要能够指定一个不同的用户。

在Jenkins或Artifactory的GUI中设置相同的选项。

对丹尼尔回应的细化:

仅HTTP代理configuration

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

仅HTTPS代理configuration

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

HTTP和HTTPS代理configuration

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

为我工作(在homedir或projet目录grade.properties,build设仍然失败)。 感谢您指出这个问题的解决scheme。

这是我的gradle.properties,请注意那些HTTPS部分

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

使用一个非常简单的“请求URL”Java程序,我能够复制这个问题。

http.proxyUserhttp.proxyPassword似乎是非标准的,虽然很stream行,但是在Gradle教程链接的Java引用页面中没有描述它们; 尽pipeGradle手册提到了它们。

看来希望支持代理validation的Java程序需要手动执行此操作 (并且可以使用链接页面上的代码执行此操作)。


我向Gradle问题跟踪器提交了这个问题(和一个修补程序)。 提出的问题GRADLE-1556在1.0-milestone-8(2012年2月)

尝试以下操作:

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

在我的build.gradle我有以下任务,它使用shell env中通常的linux代理设置HTTP_PROXYHTTPS_PROXY

 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 

对于我来说,在build.gradle文件所在的项目的gradle.properties文件中添加了这个configuration:

 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 

其中:proxyUrl是代理服务器的URL( http:// …. )

proxyPort是端口(通常是8080)

USER是我的域用户

密码,我的密码

在这种情况下,http和https的代理是相同的

如果你在代理和使用eclipse后,进入Window Menu --> Preferences --> General --> Network Connections 。 selectActive Providers作为“手动”。

在“代理服务器条目”部分下,单击“HTTPS”,单击“编辑”并添加代理主机和端口。 如果用户名和密码是必需的,那么也是这样。 它为我工作!

如果这个问题与HTTP错误407发生在选定的软件包只有那么问题是不是在代理设置和互联网连接。 您甚至可能通过NAT将您的PC暴露给互联网,并仍然会面临这个问题。 通常在同一时间,您可以在浏览器中下载所需的软件包。 我find的唯一解决scheme:删除configuration文件中的.gradle文件夹(不在项目中)。 之后,同步项目,这将需要很长的时间,但恢复一切。

build.gradle文件所在的项目文件夹中创build一个名为gradle.properties的文件。 添加以下条目

  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 

如果您使用DNS代理,然后添加它像systemProp.https.proxyHost=www.proxysite.com

对于IP,只需使用输出http://https://指定IP
查阅gradle官方文档了解更多详情,并在全球范围内设置代理