我需要通过代理服务器从 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"
}
按照这个描述,我在主目录的 .gradle/gradle.properties 中指定了以下内容:
systemProp.http.proxyHost=hostname
systemProp.http.proxyPort=8080
systemProp.http.proxyUser=de\\username
systemProp.http.proxyPassword=xxx
使用上述代理配置(以其他方式已知可以工作),它会失败:
11:33:17.699 [错误] [org.gradle.BuildExceptionReporter] 原因:java.io.IOException:服务器返回 HTTP 响应代码:407 用于 URL:http ://gradle.artifactoryonline.com/gradle/plugins/org/ jfrog/buildinfo/build-info-extractor-gradle/1.0.1/artifactoryplugin-1.0.1.gradle
我有两台代理服务器可供选择,一台总是以407
( Proxy authentication required ) 响应,另一台以502
( Bad gateway ) 响应,因此显然使用了 proxyHost 和 proxyPort 选项。
由于用户名(基于 Active Directory 用户)包含反斜杠,因此我尝试了\\
and \
,但都没有成功。指定的用户与登录到机器和 Active Directory 的用户不同。此用户的凭据对代理无效,因此我需要能够指定其他用户。
在 Jenkins 或 Artifactory 的 GUI 中设置相同的选项是可行的。