[java] Gradle 프록시 구성

Jenkins에 Gradle / Artifactory 통합을 사용하려면 프록시 서버를 통해 Gradle에서 웹 액세스가 필요합니다. 문제의 가능한 원인을 줄이기 위해 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 : 서버에서 URL에 대한 HTTP 응답 코드 : 407을 리턴 함 : http://gradle.artifactoryonline.com/gradle/plugins/org/ jfrog / buildinfo / build-info-extractor-gradle / 1.0.1 / artifactoryplugin-1.0.1.gradle

선택할 수있는 두 개의 프록시 서버가 있으며 하나는 항상 407( 프록시 인증 필요 ), 다른 하나는 502( 불량 게이트웨이 )로 응답 하므로 proxyHost 및 proxyPort 옵션이 사용됩니다.

Active Directory 사용자를 기반으로하는 사용자 이름에 백 슬래시가 포함되어 있으므로 \\와를 모두 시도했지만 둘 다 시도 \하지 않았습니다. 지정된 사용자가 컴퓨터 및 Active Directory에 로그인 한 사용자와 다릅니다. 이 사용자의 자격 증명이 프록시에 유효하지 않으므로 다른 사용자를 지정할 수 있어야합니다.

Jenkins 또는 Artifactory의 GUI에서 동일한 옵션을 설정하면 효과가 있습니다.



답변

다니엘의 반응에 대한 개선 :

HTTP 전용 프록시 구성

gradlew -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=3128 "-Dhttp.nonProxyHosts=*.nonproxyrepos.com|localhost"

HTTPS 전용 프록시 구성

gradlew -Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=3129 "-Dhttp.nonProxyHosts=*.nonproxyrepos.com|localhost"

HTTP 및 HTTPS 프록시 구성

gradlew -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=3128 -Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=3129 "-Dhttp.nonProxyHosts=*.nonproxyrepos.com|localhost"

사용자 및 비밀번호를 사용한 프록시 구성

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 = 통과 -Dhttp.nonProxyHosts = host1.com | host2.com

나를 위해 일했습니다 ( gradle.propertieshomedir 또는 project dir에서 빌드가 여전히 실패했습니다). 이 해결 방법을 제공 한 gradle의 문제를 지적 해 주셔서 감사합니다. https://docs.gradle.org/current/userguide/build_environment.html#sec:accessing_the_web_via_a_proxy 에서 참조 문서를 참조하십시오.

업데이트
이러한 속성을 넣을 수도 있습니다 gradle-wrapper.properties( https://stackoverflow.com/a/50492027/474034 참조 ).


답변

이것은 내 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


답변

내에서 build.gradle나는 보통의 리눅스 프록시 설정을 사용하여 다음과 같은 작업을 가지고 HTTP_PROXYHTTPS_PROXY쉘 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


답변

나를 위해 build.gradle 파일이 프로젝트의 gradle.properties 파일 에이 구성을 추가하는 작업 :

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의 프록시는 동일합니다.


답변

다음을 시도하십시오 :

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


답변

사용하여 매우 간단한 “URL을 요청”자바 프로그램을, 나는이 문제를 복제 할 수 있었다.

http.proxyUser그리고 http.proxyPassword그들은 설명하지 않는 등, 옵션, 비표준 인기이기는 것 같다 Gradle을 튜토리얼에서 링크 된 자바 참조 페이지 ; Gradle 매뉴얼에 언급되어 있지만.

프록시 인증을 지원하려는 Java 프로그램은 수동 으로이 작업을 수행해야합니다 (링크 된 페이지의 코드를 사용 하여이 작업을 수행 할 수 있음).


이 문제 (및 수정 사항)를 Gradle 문제 추적기에 제출했습니다 . 제기 된 문제 GRADLE-1556이 1.0 마일스톤 -8에서 해결되었습니다 (2012 년 2 월)


답변

c : \ Users \ 사용자 이름 \ .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 seperated by | >