148

プロキシ経由で Maven を使用した経験を共有したいと思います。

ほとんどの場合、次のような例外とメッセージに直面するでしょう:

リポジトリ メタデータ: 'org.apache.maven.plugins' から取得できませんでした
リポジトリ: エラーによる中央: ファイル転送エラー: 接続が拒否されました: 接続

また

[警告] org.apache.maven.plugins:maven-clean- のプラグイン記述子を取得できませんでした
plugin:2.5: プラグイン org.apache.maven.plugins:maven-clean-plugin:2.5 またはそのいずれか
依存関係を解決できませんでした: のアーティファクト記述子を読み取れませんでした
org.apache.maven.plugins:maven-clean-plugin:jar:2.5

プロキシ サーバーを使用するように Maven を構成するにはどうすればよいですか?

4

17 に答える 17

157

Maven のプロキシ設定の詳細については、ミニガイドを参照してください。

[maven install]/conf/settings.xml基本的に、グローバル設定 ( ) またはユーザー設定 ( ${user.home}/.m2/settings.xml) のプロキシ セクションが正しく構成されていることを確認する必要があります。パスワードをプレーンテキストで公共の場所に保存しないように、ユーザー設定でこれを行うことをお勧めします。

Maven 2.1 ではパスワードの暗号化が導入されましたが、暗号化がプロキシ設定とリポジトリのパスワードに適用されるかどうかを確認することはできませんでした (そうしない理由はわかりません)。

詳細については、settings.xml にコメントアウトされたプロキシ構成と、それを変更する方法の説明があります。

ミニガイドによると、設定は次のようになります。

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                  http://maven.apache.org/xsd/settings-1.0.0.xsd">
[...]
  <proxies>
    <proxy>
      <active>true</active>
      <protocol>http</protocol>
      <host>proxy.somewhere.com</host>
      <port>8080</port>
      <username>proxyuser</username>
      <password>somepassword</password>
      <nonProxyHosts>www.google.com|*.somewhere.com</nonProxyHosts>
    </proxy>
  </proxies>
[...]
</settings>
于 2009-08-09T11:39:57.400 に答える
58

ソックスプロキシの使用方法は?

どこかのサーバーへの SSH トンネルをセットアップします。

ssh -D $PORT $USER@$SERVER

Linux (バッシュ):

export MAVEN_OPTS="-DsocksProxyHost=127.0.0.1 -DsocksProxyPort=$PORT"

ウィンドウズ:

set MAVEN_OPTS="-DsocksProxyHost=127.0.0.1 -DsocksProxyPort=$PORT"
于 2011-03-28T06:42:12.773 に答える
34

私もこの問題を抱えていたので、フォルダ内のsettings.xmlファイルを編集して解決しました。.m2settings.xmlは今こんな感じです:

<settings>
  <proxies>
    <proxy>
      <id>genproxy</id>
      <active>true</active>
      <protocol>http</protocol>
      <host>proxyHost</host>
      <port>3128</port>
      <username>username</username>
      <password>password</password>
    </proxy>
 </proxies>
</settings>
于 2012-12-19T18:35:08.643 に答える
32

また、一部のプラグイン (リモート リソースが思い浮かびます) は、MAVEN_OPTS を介したプロキシ構成のみを受け入れる非常に古いライブラリを使用することに注意してください。

-Dhttp.proxyHost=<host> -Dhttp.proxyPort=<port> -Dhttps.proxyHost=<host> -Dhttps.proxyPort=<port>

これについては認証に行き詰まっている可能性があります。

于 2013-08-30T08:13:02.790 に答える
16

これらは、次の 2 つの問題が原因である可能性が最も高いです。

  1. プロキシ構成を settings.xml に追加する必要があります。これがユーザー名フィールドのトリックです。ドメイン\ユーザー名のようになっていることを確認してください。そこにドメインを設定し、この正確なスラッシュを配置することが重要です '\'. パスワードに xml に適していない文字が含まれている場合は、 <![CDATA[]]> タグを使用することをお勧めします。
  2. Maven 2.2.0 は、2.2.1 が完全に正常に動作するプロキシを介してまったく動作しない場合があることに気付きました。

それらのいくつかが省略されている場合、maven はランダムなエラー メッセージで失敗する可能性があります。

私のように、誰かがこの問題を 6 時間グーグル検索するのを防げたことを願っています。

于 2009-08-09T11:44:55.473 に答える
15

これに関する私自身の経験を追加するだけです:私の会社のプロキシは http://webproxy.intra.companyname.com:3128. Maven がこのプロキシ経由で動作するには、設定は次のようにする必要があります。

<settings>
  <proxies>
    <proxy>
      <id>default</id>
      <active>true</active>
      <protocol>http</protocol>
      <host>webproxy.intra.companyname.com</host>
      <port>3128</port>
    </proxy>
  </proxies>
</settings>

他のいくつかのプロキシ構成ファイルとは異なり、protocolここではプロキシ サーバーへの接続方法について説明しますが、どの種類のプロトコルをプロキシする必要があるかについては説明しません。ターゲットのhttp部分は、ホスト名から分割する必要があります。そうしないと機能しません。

于 2015-12-13T11:45:37.333 に答える
14

ありがとう@krosenvold。

設定ファイルの変更がうまくいかない場合は、POM ファイルのあるコマンド プロンプトでこれを試してください。

mvn install -Dhttp.proxyHost=abcproxy -Dhttp.proxyPort=8080 -Dhttps.proxyHost=abcproxy -Dhttps.proxyPort=8080

これは、パスワード変更直後に役立ちました。

于 2018-01-12T10:50:01.157 に答える
6

そして、このトピックに追加するために、以下に私の経験があります...本当に奇妙で時間がかかるので、追加する価値があると思いました.

Windows でポートレット ブリッジを構築しようとして同様の問題が発生し、次のエラーが発生しました。

ダウンロード: http://repo1.maven.org/maven2/org/apache/portals/bridges-pom/1.0/bridges-pom-1.0.pom
[デバッグ] 解決追跡ファイル C:\Documents and Settings\myuser\.m2\repository\org\apache\portals\bridges-pom\1.0\bridges-pom-1.0.pom.lastUpdated の読み取り
[デバッグ] 解決追跡ファイルの書き込み C:\Documents and Settings\myuser\.m2\repository\org\apache\portals\bridges-pom\1.0\bridges-pom-1.0.pom.lastUpdated
[エラー] ビルドで 1 プロジェクトを読み取れませんでした -> [ヘルプ 1]
org.apache.maven.project.ProjectBuildingException: POM の処理中にいくつかの問題が発生しました:
[FATAL] 解決できない親 POM: アーティファクトを転送できませんでした
org.apache.portals:bridges-pom:pom:1.0 from/to central (http://repo1.maven.org/maven2): ファイル転送エラー: repo1.maven.org と 'parent.relativePath' が間違ったローカルを指している
POM @ 23 行目、11 列目
...
[エラー] プロジェクト org.apache.portals.bridges:portals-bridges-common:2.0 (H:\path_to_project\portals-bridges-common-2.0\pom.xml) に 1 つのエラーがあります
[エラー] 解決できない親 POM: アーティファクト org.apache.portals:bridges-pom:pom:1.0 を中央 (http://repo1.maven.org/maven2) との間で転送できませんでした:
ファイル転送エラー: repo1.maven.org と 'parent.relativePath' が間違ったローカル POM を指している @ 行 23、列 11: 不明なホスト repo1.maven.org -> [ヘルプ 2]
...
[エラー] エラーと考えられる解決策の詳細については、次の記事をお読みください。
[エラー] [ヘルプ 1] http://cwiki.apache.org/confluence/display/MAVEN/ProjectBuildingException
[エラー] [ヘルプ 2] http://cwiki.apache.org/confluence/display/MAVEN/UnresolvableModelException

少しサーフィンした後、いくつかのことを試しました。

  • 親がローカルであると Maven が認識しないように、parent.relativePath を空に設定しようとしました。これは、 Hudson build fail: Non-resolvable parent POM and in this nabble forumでの SO に関する提案によるものです。これは効果がありませんでした。

  • また、リポジトリが settings.xml に明示的にリストされていることを確認しようとしましたが、これも効果がありませんでした。

  • 次に、Sarthon によるこのブログで説明されているように、mvn が自身の履歴に依存するのではなく、リポジトリをルックアップすることを強制されるようにしました。残念ながら、これも問題ではありませんでした。

  • 必死になって、プロキシ設定に違反していないことを確認するために、MAVEN_OPTS に再度アクセスしました。値は引用されていませんが、これらは正しかったです。

    設定 MAVEN_OPTS= -Dhttp.proxyHost=myproxy.mycompany.com -Dhttp.proxyPort=8080 -Xmx256m

  • 最後に、プロキシ構成を settings.xml に移動すると、次のように機能しました。

    <proxies>
      <proxy>
        <id>genproxy</id>
        <active>true</active>
        <protocol>http</protocol>
        <!--username>proxyuser</username-->
        <!--password>proxypass</password-->
        <host>myproxy.mycompany.com</host>
        <port>8080</port>
        <nonProxyHosts>*.mycompany.com|127.0.0.1</nonProxyHosts>
      </proxy>
    </proxies>

settings.xml構成が機能しているのに、元のMAVEN_OPTSが機能していなかった理由が本当にわかりません(引用符?)。修正を元に戻し、各ステップをもう一度確認したいのですが、時間がかかりすぎました。随時報告します。

于 2011-10-19T14:56:48.783 に答える
4

これは実際には質問に対する答えではないことはわかっていますが、この投稿を検索している人にとっては知っておく価値があるかもしれません. nexusのような Maven リポジトリ プロキシをインストールすることもできます。

Maven はローカルの Nexus プロキシに接続するように構成され、Nexus はアーティファクトを取得 (およびキャッシュ) します。これは、Web インターフェイスを介して構成でき、(http) プロキシをサポートしています)。

アーティファクトはローカルで利用可能で、高速にダウンロードでき、外部の Maven リポジトリの可用性に依存しなくなるため、これは特に会社の設定で利点となる可能性があります。

質問に戻るには; Nexus には、プロキシ設定用の優れた GUI があり、すべての開発者ではなく、1 か所でのみ実行する必要があります。

于 2009-08-09T12:16:23.110 に答える
1

Maven がプロキシ経由で機能するが、起動しているプラ​​グインの一部が機能しない場合は、設定JAVA_TOOL_OPTIONSを使用して設定も試してください-Dhttp*.proxy*

JAVA_OPTSすでに行っている場合

export JAVA_TOOL_OPTIONS=$JAVA_OPTS
于 2016-09-02T11:25:38.523 に答える
0

上記の手法を除いて、少し努力すれば、jproxyloader ライブラリを使用してプロキシ経由で Maven を実行できます (これを行う方法のページに例があります: http://jproxyloader.sourceforge.net/ )。これにより、成果物をダウンロードするためだけにソックス プロキシを設定できます。

duanni (設定 -DsocksProxyHost) によって言及された解決策には、1 つの問題があります。ローカル データベースに対して統合テストを実行している場合 (または、プロキシを経由してはならない URL に接続する別のテスト)。データベースへの接続もプロキシに向けられるため、これらのテストは機能しなくなります。jProxyLoader を使用すると、nexus ホストのみにプロキシを設定できます。さらに、必要に応じて、別のプロキシを介してデータベースへの接続を渡すことができます。

于 2014-08-02T04:57:53.857 に答える
0

場合によっては、他のタグを追加<proxy></proxy>し、プロトコル タグで https を指定する必要があります。<protocol>https</protocol>

于 2018-09-17T19:40:34.080 に答える