88

プロキシを使用するように sbt を構成するにはどうすればよいですか?

たとえば、私のビルド定義はhttp.proxyhttp.proxyPortuser、およびの接続パラメーターを指定して、GitHub に接続する必要がありpasswordます。

これらの設定を sbt に渡すにはどうすればよいですか?

自宅で仕事をしているときに、プロキシ/非プロキシ設定を簡単に切り替える方法はありますか?

4

16 に答える 16

138

sbthttp プロキシ設定の通常の環境変数を尊重します。

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 経由で機能するため、おそらくhttps.proxyHostandも含めたいと思うでしょう。https.proxyPort
  • プロキシで認証が​​必要な場合は、SBT が他の認証をサポートしていないため、基本認証のみを使用している場合を除き、試す必要はありません。また、クリア テキストの資格情報を環境変数に入れることにも常に注意してください。トレース ファイルを作成しないテキスト編集方法を使用して、必ず .bash_history からコマンドを削除してください (技術的にはshredファイルsrm全体を削除する必要があります)。Windows を使用している場合は、心配する必要はありません。セキュリティはすでにめちゃくちゃになっているため、これ以上害を及ぼすことはできません。
于 2012-12-10T15:46:28.490 に答える
26

sbt他の JVM ベースのプロジェクトが通常構成されている方法と比較して、かなり標準的な方法で動作します。

実際、sbt は 2 つの「サブシステム」である - ランチャーとコアである。通常xsbt.boot.Boot、これはコアが起動する前に実行され、私たち全員が知っている (そして好きな機能もあります) 機能を備えています。

したがって、HTTP、HTTPS、および FTP ネットワーク トラフィックのプロキシを設定する方法を示す sbt をどのように実行するかが問題になります。

以下は、プロキシ経由で通信をルーティングするように Java API に指示する、sbt を含む任意の Java アプリケーションに設定できる使用可能なプロパティの完全なリストです。

  • http_proxy
  • http_proxy_user
  • http_proxy_pass
  • http.proxyHost
  • http.proxyPort
  • http.proxyUser
  • http.proxyPassword

http上記をhttpsandに置き換えftpて、サービスのプロパティのリストを取得します。

一部のスクリプトは、他のスクリプト (上記)とともにプロキシ設定をセットアップするために使用しますsbtJava ネットワークとプロキシを参照してください。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 のプロキシを設定するために要約されます。

于 2013-09-16T09:19:42.240 に答える
12

私が使用した(これは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 が使用されているようです

于 2014-03-27T11:45:12.593 に答える
6

すべての 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)'

于 2015-08-05T06:27:17.643 に答える
4

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'

于 2015-03-16T12:04:21.360 に答える
3

プロキシ情報を %JAVA_OPTS% に追加すると、"-Dhttp.proxyHost=yourserver was unexpected at this time" というエラーが表示されました。プロキシ情報を %SBT_OPTS% に入れたところ、うまくいきました。

于 2013-04-12T15:26:33.260 に答える
2

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"
于 2016-04-14T08:40:07.187 に答える
1

Mac OS X / El Capitan では、Java 環境変数を設定できます。

$launchctl setenv _JAVA_OPTIONS "-Dhttp.proxyHost=192.168.1.54 -Dhttp.proxyPort=9999"
于 2015-12-29T20:13:51.020 に答える
1

ターミナルから IntelliJ IDEA を起動すると、インターネット経由で接続してダウンロードできることがわかりました。ターミナルから開始するには、次のように入力します。

$ idea

于 2017-08-02T13:46:30.503 に答える