sbt の最初のダウンロードをプロキシ経由で行う
sbt を実行する JVM を設定し、ランチャーのダウンロード、リポジトリの選択、プロキシ認証を区別します。
sbt は、ビルド定義が何か役に立つことをする前にネットワークを必要とすることがあります。ランチャーはコンポーネントを取得する必要があり、ビルドは後で追加のライブラリを通じてリポジトリに接続することがあります。タスクの中に隠れたプロキシ設定は、最初のダウンロードには遅すぎるかもしれません。
実際に sbt を実行する JVM から始めます。プロジェクトの .jvmopts を読むランチャーでは、基本的なエンドポイントプロパティは次のとおりです。
-Dhttp.proxyHost=proxy.example.net
-Dhttp.proxyPort=8080
-Dhttps.proxyHost=proxy.example.net
-Dhttps.proxyPort=8080
これらの値はホスト名とポートを分けて指定するもので、完全なプロキシ URL ではありません。許可された公開リポジトリのダウンロードには、HTTP プロキシ一覧がこれらのフィールドの候補値を提供します。HTTPS リポジトリにも、CONNECT を使って HTTP プロキシ経由で到達できます。
どのダウンロードが失敗したかに注目する
ランチャーのブートストラップ、ビルドツールのコンポーネント、プラグイン、依存関係は、必ずしも同じ設定レイヤーを使うわけではありません。リポジトリ宣言を編集する前に、失敗した URL と段階を特定してください。
リポジトリの選択は、アーティファクトをどこから取得するかに答えます。プロキシ設定は、ネットワーククライアントがそのエンドポイントにどう到達するかに答えます。リポジトリを社内ミラーに置き換えることは別のサポートされた選択肢になり得ますが、他のすべての宛先にネットワークプロキシを設定するものではありません。
プロキシ認証も確認事項です。すべての Java ダウンローダーが任意の proxyUser プロパティをサポートされたログイン機構として扱うと決めつけないでください。インストールされたランチャーと該当するリゾルバについて文書化された認証方式を使用してください。
最後に、別のランナー向けのガイドから変数をコピーするのではなく、実際に有効なランチャー環境を確認してください。DNS の失敗、利用できないリポジトリ、拒否されたプロキシログインは、いずれも依存関係の解決中に現れますが、必要な修正は大きく異なります。