191

JenkinsのGradle/Artifactory統合を使用するには、プロキシサーバーを介してGradleからWebアクセスが必要です。問題の考えられる原因を減らすために、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

選択できるプロキシサーバーが2つあり、1つは常に407プロキシ認証が必要)で応答し、もう1つは502不正なゲートウェイ)で応答するため、明らかに、proxyHostオプションとproxyPortオプションが使用されます。

ユーザー名(Active Directoryユーザーに基づく)に円記号が含まれているため、との両方を試しまし\\\が、どちらも機能しませんでした。指定されたユーザーは、マシンおよびActiveDirectoryにログインしているユーザーとは異なります。このユーザーの資格情報はプロキシに対して有効ではないため、別のユーザーを指定できるようにする必要があります。

JenkinsまたはArtifactoryのGUIで同じオプションを設定すると機能しました。

4

18 に答える 18

238

ダニエルの反応の精緻化:

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.propertieshomedirまたはproject dirのいずれかで、ビルドはまだ失敗していました)。この回避策を提供したgradleで問題を指摘していただきありがとうございます。https://docs.gradle.org/current/userguide/build_environment.html#sec:accessing_the_web_via_a_proxyのリファレンスドキュメントを参照してください

更新 これらのプロパティをに入れることもできますgradle-wrapper.propertieshttps://stackoverflow.com/a/50492027/474034を参照)。

于 2014-03-26T16:01:13.983 に答える
82

これは私の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
于 2016-05-06T18:54:02.670 に答える
64

build.gradleの場合、通常のLinuxプロキシ設定を使用する次のタスクがあり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
于 2015-11-10T18:06:47.293 に答える
31

私の場合、プロジェクトの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のプロキシは同じです

于 2016-09-08T13:57:09.830 に答える
29

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 | >
于 2018-09-03T14:17:36.353 に答える
24

非常に単純な「URLの要求」Javaプログラムを使用して、問題を再現することができました。

http.proxyUserまた、GradleチュートリアルからリンクされているJavaリファレンスページhttp.proxyPasswordで説明されていないため、一般的ではありますが、非標準のオプションのようです。Gradleのマニュアルに記載されていますが。

プロキシ認証をサポートしたいJavaプログラムは、これを手動で行う必要があるようです(そして、リンクされたページのコードを使用してこれを行うことができました)。


この問題(および修正)をGradle問題追跡システムに送信しました。提起された問題GRADLE-1556は1.0マイルストーン-8で解決されました(2012年2月)

于 2011-05-13T13:57:36.213 に答える
24

次のことを試してください。

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

于 2014-12-15T18:49:35.493 に答える
13

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

IPの場合は、IPを指定しないhttp://か、 gradleの公式ドキュメントで詳細とグローバルレベルでのプロキシの設定をhttps://
確認してください。

于 2017-11-08T11:19:15.997 に答える
10

プロキシの背後でGradleを使用する方法は2つあります。

コマンドラインに引数を追加する

(Guillaume Bercheの投稿から)

これらの引数を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構成ファイルに行を追加します

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

(ファイルの場所については、公式ドキュメントhttps://docs.gradle.org/current/userguide/build_environment.htmlgradle.propertiesを参照してください。


編集: @Joostが言ったように:私が最初に見落としていた小さいが重要な詳細:実際のホスト名にはURLのプロトコル部分が含まれていないことに注意してください... http://

于 2018-02-02T12:00:32.733 に答える
5

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
于 2017-12-28T19:03:11.413 に答える
2

androidstudioの外観と動作=>システム設定=>HTTPプロキシからプロキシを設定しようとした場合。しかし、プロキシが機能しなかったので、プロキシをクリックしません。

NO PROXYをチェックしても、gradle.properties(Global)からプロキシ設定は削除されません。手動で削除する必要があります。

したがって、 systemPropで始まるすべてのプロパティを削除します。たとえば、systemProp.http.nonProxyHosts = *。local、localhost

于 2018-05-15T13:03:41.020 に答える
1

システムプロパティで構成されている場合、ユーザー名とパスワードを動的に設定する@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())
        }
    }
}
于 2018-03-26T18:14:56.147 に答える
1

ファイルを編集して~/.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プロキシホストです

それは私のために働いた。

于 2021-08-03T03:09:37.407 に答える
0

HTTPエラー407のこの問題が選択したパッケージでのみ発生した場合、問題はプロキシ設定とインターネット接続にありません。PCをNAT経由でインターネットに公開しても、この問題に直面する可能性があります。通常、同時にブラウザで目的のパッケージをダウンロードできます。私が見つけた唯一の解決策は、プロファイル内の.gradleフォルダーを削除することです(プロジェクト内ではありません)。プロジェクトを同期した後、長い時間がかかりますが、すべてを復元します。

于 2017-11-03T12:51:27.397 に答える
0

フラッターを使用している場合は、次の行を追加しますandroid/gradle.properties

systemProp.http.nonProxyHosts=*.local, localhost
于 2021-05-23T18:47:40.997 に答える
0

kotlin .kts設定ファイルでは、プロパティを次のように定義する必要があります。

extra["systemProp.http.proxyHost"]="127.0.0.1"
extra["systemProp.http.proxyPort"]="12345"
于 2021-08-20T06:04:02.110 に答える
0

古いバージョンのSDKをインストールして設定JAVA_HOMEした後、同じ問題が発生しました。.zshrc上記の解決策はどれも役に立ちませんでしたが、最終的にRESTARTED COMPUTER(Mac)エラーはなくなりました。

于 2021-08-23T16:09:02.197 に答える
-1

プロキシの背後にいてEclipseを使用している場合は、に移動しWindow Menu --> Preferences --> General --> Network Connectionsます。「手動」としてアクティブなプロバイダーを選択します。

[プロキシエントリ]セクションで、[HTTPS]をクリックし、[編集]をクリックしてプロキシホストとポートを追加します。ユーザー名とパスワードが必要な場合は、それも指定してください。それは私のために働いた!

于 2015-08-13T09:57:05.827 に答える