プロキシの背後からsbtを使用する方法は?


85

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

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

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

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

回答:


135

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上で機能するので
  • プロキシで認証が​​必要な場合は、SBTが他に何もサポートしていないため、基本認証を使用する場合を除いて、わざわざ試してはいけません。また、環境変数への明確なテキストメッセージの資格情報に常に注意してください!トレースファイルを作成しませんテキストの編集方法を(技術的には、あなたがすべき使用しての.bash_historyからコマンドを削除してくださいshredまたはsrmファイル全体)。Windowsを使用している場合は、心配しないでください。セキュリティはすでに台無しになっており、これ以上害を及ぼすことはできません。

1
おかげで、これは正解です。私の本当の問題は、プロキシがGITで使用されるポートをブロックすることであることが判明したため、httpプロトコルを使用する必要があります。
supyo 2012

4
+1ただし、Windows 7では、コマンドプロンプトから、set JAVA_OPTS=-Dhttp.proxyHost=yourserver -Dhttp.proxyPort=8080 -Dhttp.proxyUser=username -Dhttp.proxyPassword=passwordこれを機能させるために使用する必要がありました。
HeatfanJohn 2014年

4
動作しません。「プロキシには認証が必要です」というメッセージが表示され続け、dlpに失敗します。私はレガシーNTLMの背後にいます:(
samthebest 2014年

6
私がそれを理解した後-私は私の場合、HTTPS javaシステムパラメータ-Dhttps.proxyHost を使用しなければならないことに気づきました-Dhttps.proxyPort
コニーKreyßel

1
従来のNTLMの背後にいる場合は、CNTLMを使用することをお勧めします。これで
うまくいき

25

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上記をhttpsftpに置き換えて、サービスのプロパティのリストを取得します。

一部の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が使用するプロキシを設定するために要約されます。


13

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

3
これは、httpsと同等のプロパティを持つ別の行をsbtconfig.txtに追加する限り、うまくいきました。対応するhttpプロパティとまったく同じ値を使用しました。したがって:-Dhttps.proxyHost = PROXYHOST -Dhttps.proxyPort = PROXYPORT -Dhttps.proxyUser = USERNAME -Dhttps.proxyPassword = XXXX
スナーク

4
重要な注意:もう機能しません!sbt/conf/sbtopts代わりにファイルを使用する必要があり ます。
asachet 2016

@ antoine-sacsbt/conf/sbtoptsプロキシを設定するファイルはどこにありますか?
krozaine 2017

1
sbtインストールディレクトリの@ krozaine-私のものは-WindowsC:\Program Files (x86)\sbt\conf\sbtopts上で明らかに。
asachet 2017

@ antoine-sacsbtoptsファイルに触れなくても機能するようです
enissay 2018

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が使用されているようです


sbt.shプロジェクトのどこにファイルを置くべきかインターネットで見つかりません!
hadilq 2018

SBT_OPTS ENV変数は、それはCentOSの上で私のために働く作られた唯一のものだった
イカロス

9

Windowsユーザーの場合、次のコマンドを入力します。

set JAVA_OPTS=-Dhttp.proxySet=true -Dhttp.proxyHost=[Your Proxy server] -Dhttp.proxyPort=8080

3
私の場合、httpsの設定も追加する必要がありました... codeset 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
Arun

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ビットウィンドウの場合は、次を使用します。

Progra〜1 = 'プログラムファイル'

Progra〜2 = 'Program Files(x86)'


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'ました。


3

プロキシ情報を%JAVA_OPTS%に追加すると、「-Dhttp.proxyHost = yourserverはこの時点では予期されていませんでした」というエラーが発生しました。プロキシ情報を%SBT_OPTS%に入れて、機能しました。


6
Windowsで同じエラーが発生しましたが、SBT_OPTSを設定するとエラーが修正されましたが、プロキシは設定されませんでした。解決策は、JAVA_OPTSまたはSBT_OPTSを設定することでしたが、値を引用符で囲みませんでした。
pgras 2013

2

使用する

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!。乾杯


すばやくコピーして貼り付けるのはクリーンなコマンドラインではありません。@ madguyだけです。
user278049 2016年

2

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"

2

SBTは、HTTP / HTTPS / SFTP / SSHと他の種類のリポジトリへの接続の両方を使用します。したがって、プロキシの背後にある場合は、これらのプロトコルを使用できる必要があります。

Windowsの最も単純なケースでは、次のようなプロキシパラメータオプションをJVMに渡す必要があります。

java -Dhttp.proxyHost=myproxy -Dhttp.proxyPort=8080

それで十分です。

ただし、そうでない場合は、次の点に注意する必要があります。

  1. リポジトリへのHTTPS接続を行っているかどうか。
  2. サーバー証明書がjrecacertsにインポートされたかどうか
  3. プロキシがサーバー証明書を置き換えるかどうか

最初に解決するには、次のように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


証明書の問題の場合、どのようなエラーメッセージが表示されますか?httpプロパティを使用すると、プロキシの背後にいる可能性があるなどの明確なメッセージが表示されます。httpSプロパティに切り替えると、メッセージが表示されなくなったので、より良いと思います...しかし問題が発生しますここで説明されているように:stackoverflow.com/questions/43464585/…–
Vincent F

1

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

$launchctl setenv _JAVA_OPTIONS "-Dhttp.proxyHost=192.168.1.54 -Dhttp.proxyPort=9999"

1

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

$ idea


0

認証が必要なプロキシを使用している場合は、解決策があります:)

@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と他のプロキシの間の中間として機能することです。

このアドバイスを適用するのに問題がある場合は、私に知らせてください。

よろしく、

エドガー


0

IntelliJでHTTPプロキシを構成する場所/方法を見つけようとしているこのスレッドにまだ着陸している人のために、これが私がそれをうまく機能させる方法です。これがお役に立てば幸いです。

(注:対応するボックスにネットワークのユーザー名とパスワードを指定してください):-

ここに画像の説明を入力してください


0

プロキシの詳細をパラメータとして提供してみてください

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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.