programing

그래들 프록시 구성

prostudy 2022. 7. 1. 20:45
반응형

그래들 프록시 구성

Jenkins를 위해 Gradle/Artifactory 통합을 사용하려면 프록시 서버를 통해 Gradle에서 웹 액세스가 필요합니다.문제의 원인을 줄이기 위해 수동으로 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

상기의 프록시 설정(동작하고 있는 것으로 알려진 것)에서는, 다음의 조작에 실패합니다.

11:33:17.699 [ERROR][org.gradle]Build Exception Reporter] 원인: java.ioIOException:서버가 URL: http://gradle.artifactoryonline.com/gradle/plugins/org/jfrog/buildinfo/build-info-extractor-gradle/1.0.1/artifactoryplugin-1.0.1.gradle에 대해 HTTP 응답 코드: 407을 반환했습니다.

수 있는 , "2" "1"로 은 "1"407(프록시 인증 필요), 이제1개는502(Bad Gateway) 즉 proxyHost 옵션과 proxyPort 옵션이 사용됩니다.

사용자 에되어 있기 에 둘 다 했습니다.\\ ★★★★★★★★★★★★★★★★★」\이랬어요.Active Directory를 사용합니다.이 사용자의 자격 증명이 프록시에 유효하지 않으므로 다른 사용자를 지정할 수 있어야 합니다.

Jenkins' 또는 Architory의 GUI에서 동일한 옵션을 설정하면 작동했습니다.

Daniel의 답변에 대한 개선:

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

.gradle.properties홈디르 또는 프로젝트 디르 중 하나에서 빌드가 여전히 실패하였습니다.)이 회피책을 제시해 준 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) 를 참조해 주세요.

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

의 마마 my에서는build.gradle설정을 .Linux 프록시 설정입니다.HTTP_PROXY ★★★★★★★★★★★★★★★★★」HTTPS_PROXYenv: , " " 에서:

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

저는 이 설정을 프로젝트의 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

여기서 proxyUrl은 프록시 서버의 URL입니다(http://.....).

proxyPort는 포트(통상은 8080)입니다.

USER는 내 도메인 사용자입니다.

패스워드, 내 패스워드

이 경우 http와 https의 프록시는 동일합니다.

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 seperated by | >

다음을 시도해 보십시오.

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

매우 간단한 "Request a URL" Java 프로그램을 사용하여 문제를 재현할 수 있었습니다.

http.proxyUser ★★★★★★★★★★★★★★★★★」http.proxyPasswordGradle 매뉴얼에 기재되어 있지만, Gradle 튜토리얼에서 링크된 Java 레퍼런스 페이지에는 기재되어 있지 않기 때문에, 인기 있는 옵션이라고는 해도, 비표준의 옵션인 것 같습니다.

프록시 인증을 서포트하고 싶은 Java 프로그램은 수동으로 할 필요가 있는 것 같습니다(링크 페이지의 코드를 사용하여 할 수 있었습니다).


저는 이 이슈(및 수정)를 Gradle 이슈 트래커에 제출했습니다.문제가 된 GRADLE-1556은 1.0-milestone-8(2012년 2월)로 해결되었습니다.

하다라는 을 만들어 보세요.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

를 하고 있는 는, 「DNS」와 합니다.systemProp.https.proxyHost=www.proxysite.com

의 는, out IP 를 를 합니다.http:// ★★★★★★★★★★★★★★★★★」https://
글로벌 레벨에서의 프록시 설정 및 자세한 내용은 gradle 공식 문서를 참조하십시오.

프록시 뒤에서 Gradle을 사용하는 방법에는 다음 두 가지가 있습니다.

명령줄에 인수 추가

(기욤 베르쉐의 포스트에서)

gradle 명령어에 다음 인수를 추가합니다.

-Dhttp.proxyHost=your_proxy_http_host -Dhttp.proxyPort=your_proxy_http_port

또는 https를 사용하는 경우에는 다음 인수를 사용합니다.

-Dhttps.proxyHost=your_proxy_https_host -Dhttps.proxyPort=your_proxy_https_port

그라들 구성 파일에 줄 추가

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

)gradle.properties파일 위치. 공식 문서 https://docs.gradle.org/current/userguide/build_environment.html를 참조하십시오.


편집 : @Joost : 처음에 간과했던 작지만 중요한 세부사항: 실제 호스트 이름에는 포함되지 않습니다. http://URL...

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

Android 스튜디오의 외관과 행동 => 시스템 설정 => HTTP Proxy에서 프록시를 설정하려고 하는 경우.그런데 프록시가 잘 안 돼서 No proxy를 클릭합니다.

NO PROXY를 켜도 gradle.properties(글로벌)에서 프록시 설정은 삭제되지 않습니다.수동으로 제거해야 합니다.

따라서 systemProp.http.nonProxyHosts=*.local, localhost와 같이 systemProp로 시작하는 모든 속성을 제거합니다.

@sourcesimian 및 @kunal-b의 응답 대한 업데이트.시스템 속성으로 설정되어 있는 경우, 유저명과 패스워드가 동적으로 설정됩니다.

다음에, 유저명과 패스워드가 지정되어 있는 경우는 유저명과 패스워드를 설정하거나, 유저명과 패스워드가 설정되어 있지 않은 경우는, 호스트와 포토를 추가합니다.

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())
        }
    }
}

의 편집~/.gradle/gradle.properties다음 파일을 추가합니다.

org.gradle.jvmargs=-DsocksProxyHost\=127.0.0.1 -DsocksProxyPort\=1080 -DhttpProxyHost\=127.0.0.1 -DhttpProxyPort\=1081 -DhttpsProxyHost\=127.0.0.1 -DhttpsProxyPort\=1081
  • DsocksProxyHostsocks5 프록시 호스트입니다.
  • DhttpProxyHosthttp 프록시 호스트입니다.
  • DhttpsProxyHosthttps 프록시 호스트입니다.

그것은 나에게 효과가 있었다.

HTTP 오류 407 이 문제가 선택한 패키지에서만 발생한 경우 프록시 설정 및 인터넷 연결에 문제가 없습니다.NAT을 통해 PC가 인터넷에 노출되어도 이 문제가 발생할 수 있습니다.일반적으로 브라우저에서 원하는 패키지를 동시에 다운로드할 수 있습니다.유일한 해결책은 프로젝트가 아닌 프로필에서 .gradle 폴더를 삭제하는 것입니다.동기화가 끝나면 시간이 오래 걸리지만 모든 것을 복구합니다.

플래터를 사용하는 경우 다음 행을 에 추가합니다.android/gradle.properties

systemProp.http.nonProxyHosts=*.local, localhost

kotlin .kts 설정 파일에서 속성은 다음과 같이 정의해야 합니다.

extra["systemProp.http.proxyHost"]="127.0.0.1"
extra["systemProp.http.proxyPort"]="12345"

이전 버전의 SDK를 설치하고 셋업한 후에도 같은 문제가 발생하였습니다.JAVA_HOME.zshrc위의 솔루션 중 어느 것도 도움이 되지 않지만, 최종적으로RESTARTED COMPUTER(Mac) 그러면 오류가 사라집니다.

당신이 뒤에 일식을 하고 있다면, 하세요.Window Menu --> Preferences --> General --> Network Connections를 '으로 활성 공급자를 '수동'으로 선택합니다.

[ Proxy entries ]섹션에서 [HTTPS]를 클릭하여 [Edit]를 클릭하여 프록시 호스트와 포트를 추가합니다.사용자 이름과 패스워드가 필요한 경우는, 그것도 입력합니다.나한텐 효과가 있었어!

언급URL : https://stackoverflow.com/questions/5991194/gradle-proxy-configuration

반응형