プロキシを使用するように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など)を想定しています。Windowsでは、通常のWindowsの方法と同じ環境変数(%Java_OPTS%
)を設定できます。)
その後、通常どおりsbt
を実行します。
sbt
プロキシ/プロキシなしの切り替えは、必要なときにいつでも「丸lurみ」できる小さなスクリプトを設定するだけです。
yourserver
値に「http://」を含めないでくださいyourserver
値にポートを含めないでくださいhttps.proxyHost
およびhttps.proxyPort
も含める必要があります。shred
またはsrm
する必要があります)。 Windowsを使用している場合、心配する必要はありません。セキュリティが既に台無しになっているため、これ以上害を加えることはできません。sbt
は、他のJVMベースのプロジェクトが通常構成されている方法と比較して、かなり標準的な方法で機能します。
sbtは実際には2つの「サブシステム」-ランチャーとコアです。通常、xsbt.boot.Boot
が実行されてから、コアがすべての機能(および一部の機能)で起動します。
したがって、HTTP、HTTPS、およびFTPネットワークトラフィック用のプロキシを設定する方法を示すsbtの実行方法の問題です。
以下は、Java APIにプロキシを介して通信をルーティングするよう指示するJavaアプリケーション(sbtを含む)に設定できる使用可能なプロパティのリストです。
上記のhttp
をhttps
およびftp
に置き換えて、サービスのプロパティのリストを取得します。
一部のsbt
スクリプトは、Java_OPTS
および-Dhttp.proxyHost
を使用してプロキシ設定をセットアップするために-Dhttp.proxyPort
を使用します(上記を参照)。 Java Networking and Proxies を参照してください。
一部のスクリプトには、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
に注意してくださいonly。 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 sbtが使用するJVMプロパティにJVMプロパティを渡す手段として、ソースからビルドされた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のプロキシを設定する多くのアプローチがありますが、これらはすべて要約してJVM sbtが使用するプロキシを設定するためのものです。
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
私はこれを使用しました(これは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ユーザーの場合、次のコマンドを入力します。
set Java_OPTS=-Dhttp.proxySet=true -Dhttp.proxyHost=[Your Proxy server] -Dhttp.proxyPort=8080
すべての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 was unexpected at this time」というエラーが表示されました。プロキシ情報を%SBT_OPTS%に入れましたが、うまくいきました。
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の構成を簡素化するには、sbtconfig.txtとsbtopsをconfディレクトリに提供し、調べます。
参照:
http://www.scala-sbt.org/0.13/docs/Setup-Notes.html
http://www.scala-sbt.org/1.0/docs/Publishing.html
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"
を使用して
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を追加するだけです。ありがとう@Jacek Laskowski!乾杯
Mac OS X/El Capitanでは、Java環境変数を設定できます。
$launchctl setenv _Java_OPTIONS "-Dhttp.proxyHost=192.168.1.54 -Dhttp.proxyPort=9999"
ターミナルからIntelliJ IDEAを起動すると、インターネット経由で接続してダウンロードできることがわかりました。ターミナルから開始するには、次を入力します。
$ idea
認証を必要とするプロキシを使用している場合、私はあなたのための解決策を持っています:)
@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するだけでうまく動作するはずです)。
秘Theは、Squid Proxyは認証を必要とせず、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
または(windows)
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
または(windows)
set SBT_OPTS = "-Dhttps.proxyHost=localhost -Dhttps.proxyPort=port -Dhttp.proxyHost=localhost -Dhttp.proxyPort=port"
sbt compile