Dan*_*eck 145 java proxy active-directory windows-server-2008 gradle
我需要通过代理服务器从Gradle进行Web访问,以使用Jenkins的Gradle/Artifactory集成.为了减少问题的可能原因,我在build.gradle中手动添加Artifactory插件并从命令行运行它:
apply {
apply from: "http://gradle.artifactoryonline.com/gradle/plugins/org/jfrog/buildinfo/build-info-extractor-gradle/1.0.1/artifactoryplugin-1.0.1.gradle"
}
Run Code Online (Sandbox Code Playgroud)
按照此描述,我在主目录中的.gradle/gradle.properties中指定了以下内容:
systemProp.http.proxyHost=hostname
systemProp.http.proxyPort=8080
systemProp.http.proxyUser=de\\username
systemProp.http.proxyPassword=xxx
Run Code Online (Sandbox Code Playgroud)
使用上面的代理配置(已知可以工作),它会失败:
11:33:17.699 [ERROR] [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
我有两个代理服务器可供选择,一个总是响应407(需要代理身份验证),另一个响应502(坏网关),所以很明显,使用了proxyHost和proxyPort选项.
作为用户名(基于Active Directory用户)包含反斜杠,我都尝试\\和\,但既不工作.指定的用户与登录到计算机和Active Directory的用户不同.此用户的凭据对代理无效,因此我需要能够指定其他用户.
在Jenkins或Artifactory的GUI中设置相同的选项.
Gui*_*che 198
对Daniel的回应进行了改进:
HTTP Only Proxy配置
gradlew -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=3128
仅HTTPS代理配置
gradlew -Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=3129
HTTP和HTTPS代理配置
gradlew -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=3128 -Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=3129
使用用户和密码进行代理配置
gradlew -Dhttp.proxyHost = 127.0.0.1 -Dhttp.proxyPort = 3128 - Dhttps.proxyHost = 127.0.0.1 -Dhttps.proxyPort = 3129 -Dhttps.proxyUser = user -Dhttps.proxyPassword = pass -Dhttp.proxyUser = user -Dhttp.的proxyPassword =通
为我工作(gradle.properties在homedir或项目目录中,构建仍然失败).感谢您将问题指向gradle,从而为此提供了解决方法.
更新
您还可以将这些属性放入gradle-wrapper.properties(请参阅:https://stackoverflow.com/a/50492027/474034).
小智 54
这是我的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
Run Code Online (Sandbox Code Playgroud)
小智 50
在我的build.gradle我有以下任务,它使用通常的linux代理设置,HTTP_PROXY并HTTPS_PROXY从shell env:
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
Run Code Online (Sandbox Code Playgroud)
rtr*_*lor 24
对我来说,可以在项目的gradle.properties文件中添加此配置,其中build.gradle文件是:
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
Run Code Online (Sandbox Code Playgroud)
其中:proxyUrl是代理服务器的URL(http:// ....)
proxyPort是端口(通常是8080)
USER是我的域用户
密码,我的密码
在这种情况下,http和https的代理是相同的
小智 23
请尝试以下方法:
gradle -Dhttp.proxyHost=yourProxy -Dhttp.proxyPort=yourPort -Dhttp.proxyUser=usernameProxy -Dhttp.proxyPassword=yourPassoword
Dan*_*eck 22
使用一个非常简单的"请求URL"Java程序,我能够复制该问题.
http.proxyUser并且http.proxyPassword似乎是非标准的,尽管是流行的选项,因为它们没有在Gradle教程链接的Java参考页面中描述; 尽管Gradle手册提到了它们.
希望支持代理身份验证的Java程序似乎需要手动执行此操作(我能够使用链接页面上的代码执行此操作).
我将此问题(和修复)提交给Gradle问题跟踪器.提出问题GRADLE-1556在1.0-milestone-8(2012年2月)得到解决
Cha*_*mpo 14
在c:\ Users \ your username \ .gradle \ gradle.properties中签出:
systemProp.http.proxyHost=<proxy host>
systemProp.http.proxyPort=<proxy port>
systemProp.http.proxyUser=<proxy user>
systemProp.http.proxyPassword=<proxy password>
systemProp.http.nonProxyHosts=<csv of exceptions>
systemProp.https.proxyHost=<proxy host>
systemProp.https.proxyPort=<proxy port>
systemProp.https.proxyUser=<proxy user>
systemProp.https.proxyPassword=<proxy password>
systemProp.https.nonProxyHosts=<csv of exceptions>
Run Code Online (Sandbox Code Playgroud)
use*_*864 11
创建一个gradle.properties在文件所在的项目文件夹内调用的build.gradle文件.添加以下条目
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
Run Code Online (Sandbox Code Playgroud)
如果您使用DNS代理,请添加它 systemProp.https.proxyHost=www.proxysite.com
对于IP,只需指定IP out out http://或https://
Check gradle官方文档以获取更多详细信息并在全局级别设置代理
基于SourceSimian的回应; 这适用于Windows域用户帐户.请注意,用户名 没有包含域,
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())
System.setProperty("${base}.proxyUser", "Username")
System.setProperty("${base}.proxyPassword", "Password")
}
}
}
build.dependsOn setHttpProxyFromEnv
Run Code Online (Sandbox Code Playgroud)
有两种在代理后面使用Gradle的方法:
(摘自纪尧姆·伯奇的帖子)
在gradle命令中添加以下参数:
-Dhttp.proxyHost=your_proxy_http_host -Dhttp.proxyPort=your_proxy_http_port
Run Code Online (Sandbox Code Playgroud)
或这些参数(如果您使用的是https):
-Dhttps.proxyHost=your_proxy_https_host -Dhttps.proxyPort=your_proxy_https_port
Run Code Online (Sandbox Code Playgroud)
在gradle.properties
添加以下行:
systemProp.http.proxyHost=your_proxy_http_host
systemProp.http.proxyPort=your_proxy_http_port
systemProp.https.proxyHost=your_proxy_https_host
systemProp.https.proxyPort=your_proxy_https_port
Run Code Online (Sandbox Code Playgroud)
(有关gradle.properties文件位置,请参阅官方文档https://docs.gradle.org/current/userguide/build_environment.html
编辑: @Joost所说:我最初忽略的一个小而重要的细节:请注意,实际的主机名不包含 http:// URL的协议部分...
| 归档时间: |
|
| 查看次数: |
268361 次 |
| 最近记录: |