プロキシを使用するように sbt を構成するにはどうすればよいですか?
たとえば、私のビルド定義はhttp.proxy
、http.proxyPort
、user
、およびの接続パラメーターを指定して、GitHub に接続する必要がありpassword
ます。
これらの設定を sbt に渡すにはどうすればよいですか?
自宅で仕事をしているときに、プロキシ/非プロキシ設定を簡単に切り替える方法はありますか?
プロキシを使用するように sbt を構成するにはどうすればよいですか?
たとえば、私のビルド定義はhttp.proxy
、http.proxyPort
、user
、およびの接続パラメーターを指定して、GitHub に接続する必要がありpassword
ます。
これらの設定を sbt に渡すにはどうすればよいですか?
自宅で仕事をしているときに、プロキシ/非プロキシ設定を簡単に切り替える方法はありますか?
sbt
http プロキシ設定の通常の環境変数を尊重します。
export JAVA_OPTS="$JAVA_OPTS -Dhttp.proxyHost=yourserver -Dhttp.proxyPort=8080 -Dhttp.proxyUser=username -Dhttp.proxyPassword=password"
(もちろん、Unix (Linux/OSX など) を想定しています。Windows では、Windows の方法で通常どおり同じ環境変数 ( ) を設定するだけで済みます%JAVA_OPTS%
。 )
次にsbt
、通常どおり実行します。
sbt
プロキシ/プロキシなしの切り替えは、必要なときにいつでも「丸呑み」できる小さなスクリプトを設定するだけで済みます。
yourserver
値に「http://」を含めないでくださいyourserver
値にポートを含めないでくださいhttps.proxyHost
andも含めたいと思うでしょう。https.proxyPort
shred
ファイルsrm
全体を削除する必要があります)。Windows を使用している場合は、心配する必要はありません。セキュリティはすでにめちゃくちゃになっているため、これ以上害を及ぼすことはできません。sbt
他の JVM ベースのプロジェクトが通常構成されている方法と比較して、かなり標準的な方法で動作します。
実際、sbt は 2 つの「サブシステム」である - ランチャーとコアである。通常xsbt.boot.Boot
、これはコアが起動する前に実行され、私たち全員が知っている (そして好きな機能もあります) 機能を備えています。
したがって、HTTP、HTTPS、および FTP ネットワーク トラフィックのプロキシを設定する方法を示す sbt をどのように実行するかが問題になります。
以下は、プロキシ経由で通信をルーティングするように Java API に指示する、sbt を含む任意の Java アプリケーションに設定できる使用可能なプロパティの完全なリストです。
http
上記をhttps
andに置き換えftp
て、サービスのプロパティのリストを取得します。
一部のスクリプトは、他のスクリプト (上記)とともにプロキシ設定をセットアップするために使用しますsbt
。Java ネットワークとプロキシを参照してください。JAVA_OPTS
-Dhttp.proxyHost
-Dhttp.proxyPort
SBT_OPTS
一部のスクリプトには、プロパティ.sbtopts
または (Windows のみ)を使用してプロキシ構成をセットアップする独自の方法が付属しています%SBT_HOME%\conf\sbtconfig.txt
。それらを使用して、プロキシを使用するように sbt を明確に設定できますが、他の JVM ベースのアプリケーションはまったく影響を受けません。
sbt
コマンド ライン ツールから:
# jvm options and output control
JAVA_OPTS environment variable, if unset uses "$java_opts"
SBT_OPTS environment variable, if unset uses "$default_sbt_opts"
.sbtopts if this file exists in the current directory, it is
prepended to the runner args
/etc/sbt/sbtopts if this file exists, it is prepended to the runner args
-Dkey=val pass -Dkey=val directly to the java runtime
-J-X pass option -X directly to the java runtime
(-J is stripped)
-S-X add -X to sbt's scalacOptions (-S is stripped)
そして、ここからの抜粋ですsbt.bat
:
@REM Envioronment:
@REM JAVA_HOME - location of a JDK home dir (mandatory)
@REM SBT_OPTS - JVM options (optional)
@REM Configuration:
@REM sbtconfig.txt found in the SBT_HOME.
Windowsのみsbtconfig.txt
で動作することに注意してください。ファイルを使用する場合は参照されず、他のアプローチを使用する必要があります。cygwin
次のスクリプトで sbt を使用しています。
$JAVA_HOME/bin/java $SBT_OPTS -jar /Users/jacek/.ivy2/local/org.scala-sbt/sbt-launch/$SBT_LAUNCHER_VERSION-SNAPSHOT/jars/sbt-launch.jar "$@"
スクリプトのポイントは、ソースからビルドされた最新バージョンの sbt を使用することです (それが私が使用している理由です/Users/jacek/.ivy2/local/org.scala-sbt/sbt-launch/$SBT_LAUNCHER_VERSION-SNAPSHOT/jars/sbt-launch.jar
) $SBT_OPTS
。
上記のスクリプトを使用すると、次のように MacOS X のコマンド ラインでプロキシを設定できます。
SBT_OPTS="-Dhttp.proxyHost=proxyhost -Dhttp.proxyPort=9999" sbt
ご覧のとおり、sbt のプロキシを設定するには多くの方法があり、それらはすべて sbt が使用する JVM のプロキシを設定するために要約されます。
私が使用した(これはUNIX環境です):
export SBT_OPTS="$SBT_OPTS -Dhttp.proxyHost=myproxy-Dhttp.proxyPort=myport"
これは私のセットアップでは機能しませんでした:
export JAVA_OPTS="$JAVA_OPTS -Dhttp.proxyHost=myproxy-Dhttp.proxyPort=myport"
sbt.sh ファイル内:
JAVA_OPTS environment variable, if unset uses "$java_opts"
SBT_OPTS environment variable, if unset uses "$default_sbt_opts"
しかし、どうやら JAVA_OPTS の代わりに SBT_OPTS が使用されているようです
すべての Windows ユーザーに有効な 1 つの回答を提供するには、次のようにします。
以下を sbtconfig.txt (C:\Program Files (x86)\sbt\conf) に追加します。
-Dhttp.proxyHost=XXXXXXX -Dhttp.proxyPort=YYYY -Dhttp.proxySet=true -Dhttps.proxyHost=XXXXXXX -Dhttps.proxyPort=YYYY -Dhttps.proxySet=true
XXXXXXXの両方を proxyHost に、YYYYの両方を proxyPort に置き換えます。
「メイン クラスが見つからないかロードできませんでした」というエラーが表示された場合は、JAVA_HOME を設定する必要があります。
set JAVA_HOME=C:\Progra~1\Java\jdkxxxxxx
64 ビット Windows では、次を使用します。
Progra~1 = 'プログラム ファイル'
Progra~2 = 'プログラム ファイル (x86)'
http と https の両方の構成を追加します。
export JAVA_OPTS="$JAVA_OPTS -Dhttp.proxyHost=yourserver -Dhttp.proxyPort=8080 -Dhttp.proxyUser=username -Dhttp.proxyPassword=password"
export JAVA_OPTS="$JAVA_OPTS -Dhttps.proxyHost=yourserver -Dhttps.proxyPort=8080 -Dhttps.proxyUser=username -Dhttps.proxyPassword=password"
(sbt ライブラリによって参照される URL の多くは https であるため、https 構成は必須です)
実際、両方の構成エントリに'http.proxySet'
追加の設定さえありました。'true'
プロキシ情報を %JAVA_OPTS% に追加すると、"-Dhttp.proxyHost=yourserver was unexpected at this time" というエラーが表示されました。プロキシ情報を %SBT_OPTS% に入れたところ、うまくいきました。
Lightbend Activator の FAQ セクションに役立つ項目が見つかりました。私は Activator を使用していますが、これは SBT を使用するため、これが SBT だけのユーザーに役立つかどうかはわかりませんが、私のように Activator を使用していて、プロキシの背後にいる場合は、よくある質問:
https://www.lightbend.com/activator/docs
コンテンツが消えた場合に備えて、ここにコピーして貼り付けます。
プロキシの背後でアクティベーターを実行する場合、いくつかの追加構成が必要です。最初に、~/.activator/activatorconfig.txt の下のユーザー ホーム ディレクトリにあるアクティベーター構成ファイルを開きます。このファイルが存在しない可能性があることに注意してください。次の行を追加します (1 行に 1 つのオプション)。
-Dhttp.proxyHost=PUT YOUR PROXY HOST HERE
-Dhttp.proxyPort=PUT YOUR PROXY PORT HERE
-Dhttp.nonProxyHosts="localhost|127.0.0.1"
-Dhttps.proxyHost=PUT YOUR HTTPS PROXY HOST HERE
-Dhttps.proxyPort=PUT YOUR HTTPS PROXY PORT HERE
-Dhttps.nonProxyHosts="localhost|127.0.0.1"
Mac OS X / El Capitan では、Java 環境変数を設定できます。
$launchctl setenv _JAVA_OPTIONS "-Dhttp.proxyHost=192.168.1.54 -Dhttp.proxyPort=9999"
ターミナルから IntelliJ IDEA を起動すると、インターネット経由で接続してダウンロードできることがわかりました。ターミナルから開始するには、次のように入力します。
$ idea