Как использовать sbt из-за прокси?
как настроить sbt для использования прокси-сервера?
например, мое определение сборки должно подключиться к GitHub, указав параметры подключения для http.proxy,http.proxyPort,user и password.
как бы я передал эти настройки в sbt?
есть ли простой способ переключаться между настройками прокси / без прокси, когда я работаю из дома?
13 ответов:
sbtуважает обычные переменные среды для настроек прокси http:export JAVA_OPTS="$JAVA_OPTS -Dhttp.proxyHost=yourserver -Dhttp.proxyPort=8080 -Dhttp.proxyUser=username -Dhttp.proxyPassword=password"(это, конечно, предполагая Unix (Linux/OSX и т. д.). В windows вы можете просто установить ту же переменную среды (
%JAVA_OPTS%) как обычно в Windows способом.)затем запустите
sbtкак обычно:sbtпереключение между proxy / no-proxy должно быть вопросом настройки небольшого скрипта, который вы можете "хлебать" всякий раз, когда вам нужно оно.
Gotchas
- не включайте "http: / /" в
yourserverстоимостью- не включайте порт в
yourserverстоимостью- вы, вероятно, также хотите включить
https.proxyHostиhttps.proxyPortтак как много вещей работает через https- если ваш прокси требует аутентификации, даже не пытайтесь, если он просто использует обычную аутентификацию, поскольку SBT не поддерживает ничего другого. Также всегда остерегайтесь четких текстовых учетных данных в переменные окружения! Обязательно удалите команды из вашего .bash_history с помощью метода редактирования текста, который не будет создавать файлы трассировки (технически вы должны
shredилиsrmвесь файл). Если вы находитесь на Windows, не беспокойтесь об этом, ваша безопасность уже испорчена, вы не можете больше навредить.
sbtработает довольно стандартным способом по сравнению с тем, как обычно настраиваются другие проекты на основе JVM.sbt-это фактически две "подсистемы" - пусковая установка и ядро. Это обычно
xsbt.boot.Bootэто выполняется до того, как ядро запускается с функциями, которые мы все знаем (а некоторые даже нравятся).поэтому вопрос в том, как вы выполняете sbt, который говорит, как вы можете настроить прокси для сетевого трафика HTTP, HTTPS и FTP.
следующий является ли весь список доступных свойств, которые могут быть установлены для любого приложения Java, включая sbt, которые инструктируют API Java маршрутизировать связь через прокси:
- при
- http_proxy_user
- http_proxy_pass
- http.proxyHost
- http.proxyPort
- http.proxyUser
- http.proxyPassword
заменить
httpвышеhttpsиftpto получить список свойств для служб.некоторые
sbtскрипты использоватьJAVA_OPTSдля настройки параметров прокси с помощью-Dhttp.proxyHostи-Dhttp.proxyPortсреди других (перечисленных выше). Смотрите Java Networking and Proxies.некоторые скрипты поставляются со своим собственным способом настройки конфигурации прокси с помощью
SBT_OPTSсобственность.sbtoptsили (только для Windows)%SBT_HOME%\conf\sbtconfig.txt. Вы можете использовать их, чтобы специально настроить sbt на использование прокси, в то время как другой JVM-based приложения не затрагиваются вообще.С
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 "$@"смысл скрипта в том, чтобы используйте последнюю версию sbt, построенную из источников (вот почему я использую
/Users/jacek/.ivy2/local/org.scala-sbt/sbt-launch/$SBT_LAUNCHER_VERSION-SNAPSHOT/jars/sbt-launch.jar) С$SBT_OPTSсвойство как средство передачи свойств JVM в использование JVM 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
я использовал (это среда unix):
export SBT_OPTS="$SBT_OPTS -Dhttp.proxyHost=myproxy-Dhttp.proxyPort=myport"Это не сработало для моей установки:
export JAVA_OPTS="$JAVA_OPTS -Dhttp.proxyHost=myproxy-Dhttp.proxyPort=myport"In sbt.sh файл:
JAVA_OPTS environment variable, if unset uses "$java_opts" SBT_OPTS environment variable, if unset uses "$default_sbt_opts"но видимо SBT_OPTS используется вместо JAVA_OPTS
для пользователей Windows, введите следующую команду :
set JAVA_OPTS=-Dhttp.proxySet=true -Dhttp.proxyHost=[Your Proxy server] -Dhttp.proxyPort=8080
чтобы дать один ответ, который будет работать для всех пользователей Windows:
добавьте следующую строку в ваш sbtconfig.txt (C:\Program файлы (x86)\sbt\conf)
-Dhttp.proxyHost=XXXXXXX -Dhttp.proxyPort=YYYY -Dhttp.proxySet=true -Dhttps.proxyHost=XXXXXXX -Dhttps.proxyPort=YYYY -Dhttps.proxySet=trueзаменить XXXXXXX С вашим proxyHost, и оба гггг С proxyPort.
Если вы получаете сообщение об ошибке "не удалось найти или загрузить основной класс" , вам нужно установить JAVA_HOME:
set JAVA_HOME=C:\Progra~1\Java\jdkxxxxxxкогда на 64-разрядной windows, используйте:
Progra~1 = 'Program Files'
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"(https config является обязательным, так как многие URL-адреса, на которые ссылаются библиотеки sbt, являются https)
на самом деле, у меня даже была дополнительная настройка
'http.proxySet'to'true'в обоих записях конфигурации.
когда я добавил информацию прокси в %JAVA_OPTS%, я получил сообщение об ошибке "-Dhttp.proxyHost=сервер был неожиданным в это время". Я поместил информацию прокси в %SBT_OPTS%, и это сработало.
С помощью
sbt -Dhttp.proxyHost=yourServer-Dhttps.proxyHost=yourServer -Dhttp.proxyPort=yourPort -Dhttps.proxyPort=yourPortработает в Ubuntu 15.10 x86_64 x86_64 GNU / Linux.
замените ваш сервер на правильный адрес без префиксов http:// nor https:// в Dhttp и Dhttps соответственно. Не забывайте избегать кавычек. Нет usr / pass включены в кодовую строку, чтобы включить, что просто добавить-Dhttp.proxyUser=usr-Dhttp.proxyPassword=pass с теми же критериями ввода. Спасибо @Яцек Ласковский!. Ура
Я нашел пункт в разделе FAQ активатора Lightbend полезным. Я использую активатор, который в свою очередь использует SBT, поэтому не уверен, что это помогает пользователям только с SBT, но если вы используете активатор, как и я, и находитесь за прокси, следуйте инструкциям в разделе "За Прокси" FAQ:
https://www.lightbend.com/activator/docs
на всякий случай содержимое исчезает, вот копипаст:
при запуске активатора за прокси, некоторые дополнительные настройки это необходимо. Во-первых, откройте файл конфигурации активатора, найденный в вашем домашний каталог пользователя ~/.активатор / activatorconfig.формат txt. Заметить что этот файл может не существовать. Добавьте следующие строки (по одной опции на каждую линия):
-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 к репозиторию.
- ли сертификаты sever были импортированы в jre cacerts
- заменит ли ваш прокси ваши сертификаты сервера
чтобы решить сначала, вы должны передать параметр прокси https в jvm, например:
java -Dhttps.proxyHost=myproxy -Dhttps.proxyPort=8080 -Djavax.net.ssl.trustStore=${TRUST_STORE_PATH}чтобы решить второй, вы должны импортировать ca. есть много советов.
чтобы решить третью, вы, возможно, могли бы рассмотреть возможность использования прокси-сервера аутентификации.
чтобы упростить конфигурацию 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
Я обнаружил, что запуск IntelliJ IDEA из терминала позволяет мне подключаться и загружать через интернет. Чтобы начать с терминала, введите:
$ idea
на Mac OS X / El Capitan вы можете установить переменные среды java:
$launchctl setenv _JAVA_OPTIONS "-Dhttp.proxyHost=192.168.1.54 -Dhttp.proxyPort=9999"
Comments