프록시를 사용하도록 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
프록시 / 비 프록시 간 전환은 필요할 때마다 ‘slurp’할 수있는 작은 스크립트를 설정하는 문제 여야합니다.
Gotchas
yourserver
값 에 “http : //”를 포함하지 마십시오.yourserver
값에 포트를 포함하지 마십시오.- https를 통해 많은 항목이 작동하므로 포함
https.proxyHost
하고 싶을 수도 있습니다.https.proxyPort
- 프록시에 인증이 필요한 경우 SBT가 다른 것을 지원하지 않으므로 기본 인증을 사용하지 않는 한 시도조차하지 마십시오. 또한 항상 환경 변수에 대한 명확한 텍스트 자격 증명을주의하십시오! 추적 파일을 만들지 않는 텍스트 편집 방법을 사용하여 .bash_history에서 명령을 제거해야합니다 (기술적으로
shred
또는srm
전체 파일). Windows를 사용하는 경우 걱정하지 마십시오. 보안이 이미 엉망이되어 더 이상 해를 끼칠 수 없습니다.
답변
sbt
다른 JVM 기반 프로젝트가 일반적으로 구성되는 방식과 비교하여 상당히 표준적인 방식으로 작동합니다.
sbt는 실제로 런처와 코어의 두 “하위 시스템”입니다. 일반적으로 xsbt.boot.Boot
코어가 우리 모두가 알고있는 (그리고 일부는 좋아하는) 기능으로 시작되기 전에 실행됩니다.
따라서 HTTP, HTTPS 및 FTP 네트워크 트래픽에 대한 프록시를 설정하는 방법은 sbt를 실행하는 방법의 문제입니다.
다음은 프록시를 통해 통신을 라우팅하도록 Java API에 지시하는 모든 Java 애플리케이션 (sbt 포함)에 대해 설정할 수있는 사용 가능한 특성의 전체 목록입니다.
- http_proxy
- http_proxy_user
- http_proxy_pass
- http.proxyHost
- http.proxyPort
- http.proxyUser
- http.proxyPassword
교체 http
위에서 https
및 ftp
서비스에 대한 등록 정보의 목록을 얻을 수 있습니다.
일부 sbt
스크립트를 사용 JAVA_OPTS
하여 프록시 설정을 설정 -Dhttp.proxyHost
하고 -Dhttp.proxyPort
(위에 나열된) 다른 사람의 사이에. Java 네트워킹 및 프록시를 참조하십시오 .
일부 스크립트는 SBT_OPTS
속성을 사용하여 프록시 구성을 설정하는 고유 한 방법 .sbtopts
또는 (Windows에서만) 제공 %SBT_HOME%\conf\sbtconfig.txt
됩니다. 다른 JVM 기반 응용 프로그램은 전혀 영향을받지 않는 동안 프록시를 사용하도록 sbt를 특별히 설정하는 데 사용할 수 있습니다.
로부터 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 사용에 전달하는 수단 /Users/jacek/.ivy2/local/org.scala-sbt/sbt-launch/$SBT_LAUNCHER_VERSION-SNAPSHOT/jars/sbt-launch.jar
으로 $SBT_OPTS
속성과 함께 소스에서 빌드 된 sbt의 최신 버전을 사용하는 것입니다.
위의 스크립트를 사용하면 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
답변
나는 사용했다 (이것은 유닉스 환경이다) :
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 사용자에게 적합한 하나의 답변을 제공하려면 :
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 당신의 프락시 포트에 있습니다.
“기본 클래스를 찾거나로드 할 수 없습니다”라는 오류가 발생하면 JAVA_HOME을 설정해야합니다.
set JAVA_HOME=C:\Progra~1\Java\jdkxxxxxx
64 비트 창에서는 다음을 사용하십시오.
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'
모두 구성 항목입니다.