10

私はgradleをテストしています(この分野の絶対初心者)。

私はこれをWindowsボックスで試しています。以前は、同じマシンから Maven にビルドとリリースを行わせていました。NTLM 認証を使用したプロキシの背後にあります。そして、それは以前は問題なく機能していました。しかし、どういうわけかGradleは私のためにそれをしていません。

私のbuild.gradleには次の構成があります(他とは別に)

// Java plugin to build our JAR artifact.
apply plugin: 'java'  

// Build stuff with jdk 1.7
sourceCompatibility = 1.7
targetCompatibility = 1.7

// Regular name and version for your project. 
group = 'foo.bar.gradle'
version = '1.0-SNAPSHOT'

// The local maven repository
def localMavenRepo = 'file://C:/ProgramFiles/MavenRepository'

repositories {
// Use the maven central repository. 
mavenCentral()
// ... and the local maven repository.
maven { url localMavenRepo }

// maven { url 'http://www.springsource.com/repository/' }
}


dependencies {
compile 'org.databene:contiperf:2.2.0','org.springframework:spring-webmvc:3.2.0.RELEASE'         
testCompile 'junit:junit:4.11' 
/*compile.exclude module: 'commons'*/
/*all*.exclude*/ 
}

私の /gradle.properties には次の設定があります

systemProp.proxySet=true
systemProp.http.proxyHost=<proxy name, same as that set in Maven>
systemProp.http.proxyPort=8080
systemProp.http.proxyUser=<domain name>/<user name> 

ただし、これを実行すると、次のエラーが発生します

NEGOTIATE authentication error: No valid credentials provided (Mechanism level:
No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)
)

これは Gradle のバージョン 1.3 にあります。助けてください。

更新: gradle-1.4-rc-3 に更新しました。私の gradle.properties ファイルは次のようになります。

systemProp.proxySet="true"
systemProp.http.keepAlive="true"
systemProp.http.proxyHost=<proxy name> 
systemProp.http.proxyPort=8080
systemProp.http.proxyUser=<domain name>/<username> 

しかし、私はまだ問題を見続けています。さらにいくつかのログがあります。これは STS (IDE) で確認できます

Could not GET 'http://repo1.maven.org/maven2/org/spr...'. Received status code 500 from server: Internal Server Error 
Could not execute build using Gradle installation 'C:\ProgramFiles\gradle-1.4-rc-3'.

いいえ、資格情報は間違っていません。同じセットアップで、同じ値を使用すると、Maven は正常に動作します。いいえ、gradle.properties も正しい場所にあります。プロキシの値を変更すると、エラーが変わります。したがって、ツールは間違いなく gradle.properties ファイルを読み取っています。

4

7 に答える 7

11

アップデート:

時間が経つにつれて、より良い解決策:

wagon-http-lightweight 拡張機能の追加 Wagon HTTP 軽量ライブラリは、NTLM プロキシを使用する場合の Maven 3 の認証制限を処理します。

maven リポジトリから wagon-http-lightweight-2.2.jar をダウンロードします。wagon-http-lightweight-2.2.jar を %M2_HOME%/lib/ext フォルダーにコピーします。

元の回答:

私はまったく同じ問題を抱えていました。これは、Microsoft サーバー (ISA など) でよくある問題です。あなたのアプリケーションで使用されている http ヘッダーは、NTLM に対して (少なくとも直接的には) サポートされていません。
これを回避するために、"proxy-to-proxy" を使用しました。Microsoft サーバーが要求を理解できるように、その場で http ヘッダーを変更するローカル プロキシ。

基本的に、要求をローカル (127.0.0.1) に送信します。このプロキシ サーバーは、NTLM 準拠の要求でヘッダーを変更し、8080 ポートの親プロキシに転送します。

2 つのシナリオ: 管理者特権を持っているかどうか。

管理者権限を持っている場合は、CNTLMをインストールできます。サービスとしてインストールされます。「auto-config」インストールがあり、CNTLM の wiki で確認できます (デフォルト ポート:3128)

管理者権限がない場合は、NTLM APSをインストールできます(かなり古いものですが、私には機能します)
。server.cfg ファイルを NT ドメイン、ホスト、親プロキシ + ポート、NTLM_TO_BASIC 1 (キーボードの「Windows + 一時停止」ボタンを押すと、ドメインとホストを取得できます) デフォルトのポートは 5865 です。

NTLMAPS の場合、Python が必要です (Python ポータブルは管理者権限を必要とせず、インストールに合わせて「runserver.bat」の値を変更します)。また、バグがあるため、このパッチで sourceforge のバージョンにパッチを当てる必要があります。チャンクされた応答

アプリケーションでは、次のようにプロキシ設定を変更する必要があります。

systemProp.http.proxyHost=127.0.0.1
systemProp.http.proxyPort=3128 or 5865 depending on which server you installed

場合によっては、Microsoft サーバーがまだ要求をブロックしているため、ローカル プロキシを再起動するか、親プロキシ アドレスを変更する必要があります。

于 2013-01-29T14:32:28.100 に答える
4

これはかなり古い質問ですが、「gradle」と「ntlm proxy」をグーグルで検索したときの最初のヒットの 1 つです。それに関するドキュメントはあまりありませんが、gradleが次のようなことについて不平を言う場合

GET できませんでした ' https://jcenter.bintray.com/org/slf4j/ ...

cntlm をプロキシとして使用している場合は、次のコマンド ラインが役立つ場合があります。

gradle test -DproxySet=true -Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=3128

(プロキシ名とポートのデフォルト値を想定)。「https」設定に注意してください。不足しているダウンロードは、これらの設定で正常に機能していました。

于 2015-10-13T17:52:40.480 に答える
0

Gradleは、Apache HttpClient+jcifsに依存してNTLM認証を行います。

HttpClient 4.2.1および4.2.2には、問題を引き起こす可能性のあるバグがあります。試してみるには2つのオプションがあります。

  • この問題のバグ修正が含まれているGradle1.4 -rc-3以降にアップグレードします。
  • ファイルに含めsystemProp.http.keepAlive="true"ますgradle.properties
于 2013-01-25T05:18:35.403 に答える
0

Maven リポジトリが C:\ProgramFiles の下にあり、ユーザー ディレクトリなどの一般的な書き込み可能な場所にないことがわかります。

%USERPROFILE%\.m2\repository || ~/.m2/repository 

エラー、Windows のアクセス許可エラーである可能性があります... Windows のログを確認するか、リポジトリを従来の場所に移動してみてください...

于 2013-01-29T05:21:32.187 に答える
0

過去に NTLM プロキシの背後で作業したことを覚えています。*nix ボックスで作業していたので、これらの OS では NTLM プロキシがサポートされていないため、NTLM プロキシを使用できませんでした。また、Gradle が NTLM をサポートしているとは思いませんが、間違っているかもしれません。

とにかく、当時私たちが使っていたのは (cntlm)[http://cntlm.sourceforge.net/] プロキシで、同じことができました。マシンにセットアップして、Gradle のプロキシ設定をそのマシンに向けるだけです。

編集:どうやら私は間違っていたようです-GradleはNTLM認証をサポートしています。1.0 -milestone-8のリリースノートを参照してください

于 2013-01-22T13:25:53.423 に答える