Как использовать sbt из-за прокси-сервера?

Как настроить 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 вы можете просто установить одну и ту же переменную среды ( %JAVA_OPTS% ), как обычно, в режиме Windows. )

Затем запустите sbt как обычно:

 sbt 

Переключение между proxy / no-proxy должно заключаться в настройке небольшого скрипта, который вы можете «разрывать», когда вам это нужно.

Gotchas

  • Не включайте «http: //» в значение yourserver
  • Не включайте порт в значение yourserver
  • Возможно, вы также захотите включить https.proxyHost и https.proxyPort так как много вещей работает над https
  • Если ваш прокси-сервер требует проверки подлинности, даже не утруждайте себя попытками, если только он не использует базовую проверку подлинности, поскольку SBT ничего не поддерживает. Также всегда будьте осторожны с четкими текстовыми учетными данными в переменных среды! Обязательно удалите команды из вашей .bash_history, используя метод текстового редактирования, который не будет создавать файлы трассировки (технически вы должны srm весь файл). Если вы находитесь в Windows, не беспокойтесь об этом, ваша безопасность уже перепутана, вы не можете нанести больше вреда.

sbt работает довольно стандартным образом по сравнению с тем, как обычно настраиваются другие проекты на основе JVM.

sbt – это фактически две «подсистемы» – пусковая установка и kernel. Обычно это xsbt.boot.Boot который запускается до того, как kernel ​​запускает все функции, которые мы все знаем (и некоторые даже такие).

Поэтому вопрос о том, как вы выполняете sbt, говорит о том, как вы можете настроить прокси для HTTP, HTTPS и FTP-трафика.

Ниже приведен весь список доступных свойств, которые могут быть установлены для любого приложения Java, включая sbt, которые инструктируют Java API для маршрутизации связи через прокси:

  • 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 Networking and Proxies .

Некоторые сценарии имеют собственный способ настройки прокси-конфигурации с использованием свойства .sbtopts , .sbtopts или (только для Windows) %SBT_HOME%\conf\sbtconfig.txt . Вы можете использовать их специально для установки sbt для использования прокси-серверов, в то время как другие 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 -JX pass option -X directly to the java runtime (-J is stripped) -SX 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 "[email protected]" 

Суть сценария заключается в использовании последней версии 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" 

В файле 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 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.

Если вы получите сообщение об ошибке «Не удалось найти или загрузить основной class», вам необходимо установить 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' на '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.

Замените yourServer на соответствующий адрес без префиксов http: // или https: // в Dhttp и Dhttps, соответственно. Не забывайте избегать кавычек. No usr / pass не включен в строку кода, чтобы добавить, что просто добавьте -Dhttp.proxyUser = usr -Dhttp.proxyPassword = pass с теми же критериями ввода. Спасибо @Jacek Laskowski !. ура

Я нашел элемент в разделе часто задаваемых вопросов Lightbend Activator. Я использую Activator, который, в свою очередь, использует SBT, поэтому не уверен, что это помогает пользователям только с SBT, но если вы используете Activator, как я, и находитесь за прокси-сервером, следуйте инструкциям в разделе «Behind A Proxy» ВОПРОСЫ-ОТВЕТЫ:

https://www.lightbend.com/activator/docs

На всякий случай контент исчезает, вот копия:

При запуске активатора за прокси-сервером необходима дополнительная настройка. Сначала откройте файл конфигурации активатора, который находится в домашнем каталоге пользователя в ~ / .activator / 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 

Что будет делать.

Но если нет, есть несколько вещей, о которых вам следует знать:

  1. независимо от того, подключаете ли вы HTTPS-соединение к репозиторию.
  2. независимо от того, были ли импортированы сертификаты в jre cacerts
  3. будет ли ваш прокси заменять ваши сертификаты сервера

Чтобы решить сначала, вы должны передать параметр https proxy в jvm, например:

 java -Dhttps.proxyHost=myproxy -Dhttps.proxyPort=8080 -Djavax.net.ssl.trustStore=${TRUST_STORE_PATH} 

Чтобы решить вторую, вы должны импортировать ок. есть много советов.

чтобы решить третью проблему, возможно, вам стоит подумать об использовании прокси-сервера аутентификации.

Чтобы упростить конфигурацию 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" 
  • как мне получить sbt для использования локального репозитория прокси-сервера maven (Nexus)?
  • sbt-assembly: обнаружена ошибка дедупликации
  • Jvm занимает много времени, чтобы решить ip-адрес для localhost
  • Как ссылаться на внешний проект sbt из другого sbt-проекта?
  • Значения символов Build.scala,% и %%
  • Могут ли мультипроекты из GIT использоваться в качестве зависимостей SBT?
  • Настройка sbt для использования Java 7 для компиляции?
  • Давайте будем гением компьютера.