どのプロキシ設定が Maven wrapper のダウンロードを制御するのか
Maven ディストリビューションのダウンロード失敗に対してプロキシを設定する前に、wrapper のブートストラップ・ダウンローダーを特定します。
Maven のダウンロード中に mvnw が失敗する場合、settings.xml のプロキシ設定が有効でも手遅れかもしれません。Maven はまだ起動していないからです。
対象のチェックアウトで生成された wrapper ファイルを調べ、どのダウンローダーが実行されるかを特定します。Maven Wrapper 3.3.4 は次の構成を文書化しています。
| 生成される種類 | プロキシ入力を探す場所 |
|---|---|
| only-script | Unix では curl または wget、Windows では PowerShell |
| script | wrapper JAR のダウンロードに続く Java wrapper の経路 |
| bin | 同梱の wrapper JAR とその Java ダウンロード経路 |
| source | ブートストラップに使われる場合の同梱 Java ダウンローダーのソース |
only-script は新しく生成された wrapper の文書化された既定値です。古いチェックアウトは、マシン上の Maven インストールを更新しても、生成済みファイルを保持します。
その処理に設定を合わせる
curl や wget を使う Unix の only-script wrapper では、そのダウンローダーが対応するプロキシ・インターフェースを設定します。HTTPS のダウンロードは https_proxy を使えます。そのディストリビューションのダウンロードが公開 HTTP プロキシを使う可能性があるなら、このダウンローダーの環境向けに HTTP プロキシ一覧 から候補アドレスを取ります。値が SOCKS サーバーを指すなら、ダウンローダーもそのプロトコルに対応している必要があります。
MAVEN_OPTS は JVM オプションを渡します。シェルの curl プロセスを設定することはできませんが、Java ダウンローダーの経路では JVM のプロキシ・プロパティが意味を持つことがあります。古い Takari の回避策と別プロジェクトの wrapper を比べるときの有用な違いはここです。
ディストリビューションのダウンロードが終わり Maven が起動すると、リポジトリのダウンロードは Maven 自身のプロキシ設定 に対する別の確認になります。ディストリビューション、wrapper JAR、リポジトリは別々のホストから提供されることがあります。