プロキシを使用するようにsbtを設定するにはどうすればよいですか?
例えば、私のビルド定義はのための接続パラメータを指定し、GitHubのに接続する必要があるhttp.proxy
、http.proxyPort
、user
、とpassword
。
これらの設定をsbtに渡すにはどうすればよいですか?
自宅で仕事をしているときに、プロキシ設定とプロキシなし設定を簡単に切り替える方法はありますか?
回答:
sbt
httpプロキシ設定の通常の環境変数を尊重します。
export JAVA_OPTS="$JAVA_OPTS -Dhttp.proxyHost=yourserver -Dhttp.proxyPort=8080 -Dhttp.proxyUser=username -Dhttp.proxyPassword=password"
(もちろん、Unix(Linux / OSXなど)を想定%JAVA_OPTS%
しています。Windowsでは、Windowsの方法で通常と同じ環境変数()を設定できます。)
次にsbt
、通常どおり実行します。
sbt
プロキシ/プロキシなしの切り替えは、必要なときにいつでも「スラップ」できる小さなスクリプトを設定するだけです。
yourserver
値に「http://」を含めないでくださいyourserver
値にポートを含めないでくださいhttps.proxyHost
そしてhttps.proxyPort
多くのものがhttps上で機能するのでshred
またはsrm
ファイル全体)。Windowsを使用している場合は、心配しないでください。セキュリティはすでに台無しになっており、これ以上害を及ぼすことはできません。set JAVA_OPTS=-Dhttp.proxyHost=yourserver -Dhttp.proxyPort=8080 -Dhttp.proxyUser=username -Dhttp.proxyPassword=password
これを機能させるために使用する必要がありました。
-Dhttps.proxyHost
を使用しなければならないことに気づきました-Dhttps.proxyPort
!
sbt
他のJVMベースのプロジェクトが通常構成されている方法と比較して、かなり標準的な方法で機能します。
sbtは、実際には2つの「サブシステム」(ランチャーとコア)です。それは通常xsbt.boot.Boot
、コアが私たち全員が知っている(そしていくつかは好きな)機能で起動する前に実行されます。
したがって、HTTP、HTTPS、およびFTPネットワークトラフィックのプロキシを設定する方法を示すのは、sbtの実行方法の問題です。
以下は、プロキシを介して通信をルーティングするようにJava APIに指示する、sbtを含む任意のJavaアプリケーションに設定できる使用可能なプロパティの全リストです。
http
上記をhttps
とftp
に置き換えて、サービスのプロパティのリストを取得します。
一部のsbt
スクリプトはJAVA_OPTS
、他のスクリプト-Dhttp.proxyHost
との-Dhttp.proxyPort
間でプロキシ設定をセットアップするために使用します(上記にリストされています)。Javaネットワークとプロキシを参照してください。
一部のスクリプトには、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.
これsbtconfig.txt
はWindowsでのみ機能することに注意してください。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 "$@"
スクリプトのポイントは、JVMプロパティをJVM sbtが使用するものに渡す手段として、ソースから構築された最新バージョンのsbt/Users/jacek/.ivy2/local/org.scala-sbt/sbt-launch/$SBT_LAUNCHER_VERSION-SNAPSHOT/jars/sbt-launch.jar
を$SBT_OPTS
プロパティとともに使用することです(これが私が使用している理由です)。
上記のスクリプトを使用すると、MacOSXのコマンドラインで次のようにプロキシを設定できます。
SBT_OPTS="-Dhttp.proxyHost=proxyhost -Dhttp.proxyPort=9999" sbt
ご覧のとおり、sbtのプロキシを設定する方法はたくさんありますが、そのすべてが、JVMsbtが使用するプロキシを設定するために要約されます。
Windows環境では、sbt /sbtconfig.txtに次の行を追加するだけです。
-Dhttp.proxyHost=PROXYHOST
-Dhttp.proxyPort=PROXYPORT
-Dhttp.proxyUser=USERNAME
-Dhttp.proxyPassword=XXXX
または同等のHttps(コメントのおかげで)
-Dhttps.proxyHost=PROXYHOST
-Dhttps.proxyPort=PROXYPORT
-Dhttps.proxyUser=USERNAME
-Dhttps.proxyPassword=XXXX
sbt/conf/sbtopts
代わりにファイルを使用する必要があり ます。
sbt/conf/sbtopts
プロキシを設定するファイルはどこにありますか?
C:\Program Files (x86)\sbt\conf\sbtopts
上で明らかに。
sbtopts
ファイルに触れなくても機能するようです
私が使用した(これは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が使用されているようです
sbt.sh
プロジェクトのどこにファイルを置くべきかインターネットで見つかりません!
Windowsユーザーの場合、次のコマンドを入力します。
set JAVA_OPTS=-Dhttp.proxySet=true -Dhttp.proxyHost=[Your Proxy server] -Dhttp.proxyPort=8080
code
set JAVA_OPTS = -Dhttp.proxySet = true -Dhttp.proxyHost = <Proxy Server> -Dhttp.proxyPort = <Port> -Dhttp.proxyUser = <Username>- Dht tp.proxyPassword = <Password> -Dhttps.proxySet = true -Dhttps.proxyHost = <Proxy Server> -Dhttps.proxyPort = <Port> -Dhttps.proxyUser = <Username> -Dhttp s.proxyPassword = <Password>code
すべての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ビットウィンドウの場合は、次を使用します。
Progra〜1 = 'プログラムファイル'
Progra〜2 = 'Program Files(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はこの時点では予期されていませんでした」というエラーが発生しました。プロキシ情報を%SBT_OPTS%に入れて、機能しました。
使用する
sbt -Dhttp.proxyHost=yourServer-Dhttps.proxyHost=yourServer -Dhttp.proxyPort=yourPort -Dhttps.proxyPort=yourPort
Ubuntu 15.10 x86_64 x86_64 GNU / Linuxで動作します。
yourServerを、DhttpとDhttpsにそれぞれhttp://またはhttps://プレフィックスを付けない適切なアドレスに置き換えます。引用符は避けることを忘れないでください。コード行にusr / passは含まれていません。これを含めるには、同じ入力基準で-Dhttp.proxyUser = usr -Dhttp.proxyPassword = passを追加するだけです。ありがとう@JacekLaskowski!。乾杯
LightbendActivatorの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"
SBTは、HTTP / HTTPS / SFTP / SSHと他の種類のリポジトリへの接続の両方を使用します。したがって、プロキシの背後にある場合は、これらのプロトコルを使用できる必要があります。
Windowsの最も単純なケースでは、次のようなプロキシパラメータオプションをJVMに渡す必要があります。
java -Dhttp.proxyHost=myproxy -Dhttp.proxyPort=8080
それで十分です。
ただし、そうでない場合は、次の点に注意する必要があります。
最初に解決するには、次のようにhttpsプロキシパラメータをjvmに渡す必要があります。
java -Dhttps.proxyHost=myproxy -Dhttps.proxyPort=8080 -Djavax.net.ssl.trustStore=${TRUST_STORE_PATH}
2番目を解決するには、caをインポートする必要があります。ヒントはたくさんあります。
3番目を解決するには、認証プロキシの使用を検討できます。
SBTの構成を簡素化するために、confディレクトリにsbtconfig.txtとsbtopsを提供し、調べます。
参照:
http ://www.scala-sbt.org/0.13/docs/Setup-Notes.html
http://www.scala-sbt.org/1.0/docs/Publishing.html
認証が必要なプロキシを使用している場合は、解決策があります:)
@Faizが上で説明したように、SBTは認証を必要とするプロキシを処理するのに非常に苦労しています。解決策は、プロキシをオンデマンドでオフにできない場合(たとえば、企業プロキシ)、この認証をバイパスすることです。そのためには、squidプロキシを使用し、ユーザー名とパスワードを使用して企業プロキシにアクセスするように構成することをお勧めします。参照:https: //doc.ubuntu-fr.org/squid次に、JAVA_OPTSまたはSBT_OPTS環境変数を設定して、SBTが企業プロキシではなく独自のローカルsquidプロキシに接続するようにします。
export JAVA_OPTS = "-Dhttps.proxyHost = localhost -Dhttps.proxyPort = 3128 -Dhttp.proxyHost = localhost -Dhttp.proxyPort = 3128"
(何も変更せずにbashrcでこれをc / cするだけで、正常に動作するはずです)。
秘訣は、Squidプロキシは認証を必要とせず、SBTと他のプロキシの間の中間として機能することです。
このアドバイスを適用するのに問題がある場合は、私に知らせてください。
よろしく、
エドガー
プロキシの詳細をパラメータとして提供してみてください
sbt compile -Dhttps.proxyHost=localhost -Dhttps.proxyPort=port -Dhttp.proxyHost=localhost -Dhttp.proxyPort=port
それが機能しない場合は、JAVA_OPTS(Windows以外)で試してください
export JAVA_OPTS = "-Dhttps.proxyHost=localhost -Dhttps.proxyPort=port -Dhttp.proxyHost=localhost -Dhttp.proxyPort=port"
sbt compile
または(ウィンドウ)
set JAVA_OPTS = "-Dhttps.proxyHost=localhost -Dhttps.proxyPort=port -Dhttp.proxyHost=localhost -Dhttp.proxyPort=port"
sbt compile
何も機能しない場合は、SBT_OPTSを設定します
(窓以外)
export SBT_OPTS = "-Dhttps.proxyHost=localhost -Dhttps.proxyPort=port -Dhttp.proxyHost=localhost -Dhttp.proxyPort=port"'
sbt compile
または(ウィンドウ)
set SBT_OPTS = "-Dhttps.proxyHost=localhost -Dhttps.proxyPort=port -Dhttp.proxyHost=localhost -Dhttp.proxyPort=port"
sbt compile