シェルの NO_PROXY 変数からコピーした除外指定は、Maven でそのまま有効とは限りません。Maven の nonProxyHosts リストは、環境変数で一般的なカンマ区切りではなく、項目の間に縦棒を使います。

対象のユーザー設定にあるプロキシ項目は、次のようになります。

<settings>
  <proxies>
    <proxy>
      <id>outbound-proxy</id>
      <active>true</active>
      <protocol>http</protocol>
      <host>203.0.113.10</host>
      <port>8080</port>
      <nonProxyHosts>localhost|*.example.internal</nonProxyHosts>
    </proxy>
  </proxies>
</settings>

これは proxies セクション周辺の設定例です。関係のない mirrors、servers、profiles を置き換えず、既存の設定ファイルに統合してください。実際のプロキシアドレスを使います。リポジトリへのリクエストで公開 HTTP プロキシが許可されている場合は、HTTP プロキシ一覧からホストとポートの候補を選べます。

リポジトリのホストに合わせる

Maven が実際に接続するホスト名に除外を適用します。内部リポジトリの URL と公開ダウンロードホスト名では、別の経路が必要になることがあります。パスを含むリポジトリ全体の URL を、ホストパターン用の項目に入れないでください。

ワイルドカードは使えますが、1 つの失敗を消すためだけに広すぎるパターンを使わないでください。変更後は、対象の内部名と公開リポジトリを分けて確認します。

実際に使われている設定を見つける

Maven はグローバル設定とユーザー設定を組み合わせられ、起動方法によって別の設定ファイルを選べます。IDE がターミナルとは別の Maven インストールや設定を使うこともあります。失敗している起動方法が読まないファイルを編集しても、経路は変わりません。

プロキシの有効フラグも確認します。無効な項目でホストとポートが正しくても、Maven が選ぶとは限りません。

2 つのサーバーを分ける

プロキシの認証情報は、そのサービスが要求する場合はプロキシ項目に置きます。非公開アーティファクトリポジトリの認証情報は、該当する server 設定に置きます。リポジトリのトークンを渡しても、プロキシ認証のチャレンジには答えられません。

それでもリクエストが失敗する場合は、選択されたリポジトリ URL、応答または接続エラー、実効設定の出所を記録します。まず、リクエストがプロキシ経由か直接接続かを確認してください。リストの構文とエンドポイントを同時に変えると、結果を解釈しにくくなります。

関連記事