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

Как настроить sbt для использования прокси?

Например, моему определению сборки необходимо подключиться к GitHub, указав параметры подключения для http.proxy, http.proxyPort, user и password

Как мне передать эти настройки в sbt?

Есть ли простой способ переключаться между настройками прокси /без прокси, когда я работаю из дома?

sbt
80 голосов | спросил supyo 10 MonEurope/Moscow2012-12-10T19:00:16+04:00Europe/Moscow12bEurope/MoscowMon, 10 Dec 2012 19:00:16 +0400 2012, 19:00:16

14 ответов


0

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 или ---- +: = 10 =: + ---- всего файла). Если вы работаете в Windows, не беспокойтесь об этом, ваша безопасность уже испорчена, вы не можете больше навредить.
ответил Faiz 10 MonEurope/Moscow2012-12-10T19:46:28+04:00Europe/Moscow12bEurope/MoscowMon, 10 Dec 2012 19:46:28 +0400 2012, 19:46:28
0

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

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

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

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

  • 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. Вы можете использовать их, чтобы специально настроить 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 "[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.

ответил Jacek Laskowski 16 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 16 Sep 2013 13:19:42 +0400 2013, 13:19:42
0

В среде 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
ответил Enis 15 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 15 Sep 2014 11:47:47 +0400 2014, 11:47:47
0

Я использовал (это среда 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

ответил blue-sky 27 MarpmThu, 27 Mar 2014 15:45:12 +04002014-03-27T15:45:12+04:0003 2014, 15:45:12
0

Для пользователей Windows введите следующую команду:

set JAVA_OPTS=-Dhttp.proxySet=true -Dhttp.proxyHost=[Your Proxy server] -Dhttp.proxyPort=8080
ответил rphonika 5 Mayam14 2014, 10:42:27
0

Чтобы предоставить один ответ, который будет работать для всех пользователей 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.

Если вы получили сообщение об ошибке «Не удалось найти или загрузить основной класс», вам необходимо установить JAVA_HOME:

set JAVA_HOME=C:\Progra~1\Java\jdkxxxxxx

В 64-битных окнах используйте:

  

Progra ~ 1 = 'Программные файлы'

     

Progra ~ 2 = 'Программные файлы (x86)'

ответил King Julian 5 AM00000090000001731 2015, 09:27:17
0

Добавьте конфигурацию 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 обязательна, поскольку многие URL-адреса, на которые ссылаются библиотеки sbt, являются https)

На самом деле у меня даже была дополнительная настройка 'http.proxySet' в 'true' в обеих записях конфигурации.

ответил Parasouramane D 16 MarpmMon, 16 Mar 2015 15:04:21 +03002015-03-16T15:04:21+03:0003 2015, 15:04:21
0

Когда я добавил информацию о прокси в% JAVA_OPTS%, я получил сообщение об ошибке «-Dhttp.proxyHost = yourserver в это время был неожиданным». Я поместил информацию прокси в% SBT_OPTS%, и это сработало.

ответил craigpfeifer 12 PMpFri, 12 Apr 2013 19:26:33 +040026Friday 2013, 19:26:33
0

Использование

sbt -Dhttp.proxyHost=yourServer-Dhttps.proxyHost=yourServer -Dhttp.proxyPort=yourPort -Dhttps.proxyPort=yourPort

работает в Ubuntu 15.10 x86_64 x86_64 GNU /Linux.

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

ответил user278049 13 Jpm1000000pmWed, 13 Jan 2016 22:08:13 +030016 2016, 22:08:13
0

Я нашел полезной статью в разделе часто задаваемых вопросов об активаторе Lightbend. Я использую 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"
ответил Peter Perháč 14 AMpThu, 14 Apr 2016 11:40:07 +030040Thursday 2016, 11:40:07
0

SBT использует HTTP /HTTPS /SFTP /SSH и другие виды соединений с репозиторием. поэтому, когда за прокси, эти протоколы должны быть доступны.

В большинстве простых случаев в Windows вам просто нужно передать параметры параметров прокси в JVM, например:

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

Это подойдет.

Но если нет, вам нужно знать о нескольких вещах:

  1. следует ли устанавливать HTTPS-соединение с хранилищем.
  2. импортированы ли серверные сертификаты в jre cacerts
  3. заменит ли ваш прокси сертификаты сервера

Чтобы решить сначала, вы должны передать https прокси-параметр в 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

ответил Jin Wang 26 Jam1000000amThu, 26 Jan 2017 09:47:30 +030017 2017, 09:47:30
0

В Mac OS X /El Capitan вы можете установить переменные среды Java:

$launchctl setenv _JAVA_OPTIONS "-Dhttp.proxyHost=192.168.1.54 -Dhttp.proxyPort=9999"
ответил Adrian 29 TueEurope/Moscow2015-12-29T23:13:51+03:00Europe/Moscow12bEurope/MoscowTue, 29 Dec 2015 23:13:51 +0300 2015, 23:13:51
0

Я обнаружил, что запуск IntelliJ IDEA с терминала позволяет мне подключаться и скачивать через Интернет. Чтобы начать с терминала, введите:

$ idea

ответил krozaine 2 PM00000040000003031 2017, 16:46:30
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, ничего не изменяя, и все должно работать нормально).

Хитрость в том, что Squid Proxy не требует какой-либо аутентификации и действует как промежуточное звено между SBT и вашим другим прокси.

Если у вас возникли проблемы с применением этого совета, сообщите мне.

Привет,

Эдгар

ответил krozaine 2 PM00000040000003031 2017, 16:46:30

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132