toyota - ¿Cómo usar sbt desde detrás del proxy?
sbt medicina (13)
Agregue la configuración http y 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"
(La configuración https es obligatoria, ya que muchas URL referidas por las bibliotecas sbt son https)
De hecho, incluso tuve una configuración adicional ''http.proxySet''
en ''true''
en ambas entradas de configuración.
¿Cómo configuro sbt para usar un proxy?
Por ejemplo, mi definición de compilación debe conectarse a GitHub, especificando los parámetros de conexión para http.proxy
, http.proxyPort
, user
y password
.
¿Cómo pasaría estos ajustes a sbt?
¿Hay una manera fácil de cambiar entre la configuración proxy / no proxy para cuando trabajo desde casa?
Cuando agregué la información del proxy al% JAVA_OPTS%, recibí un error "-Dhttp.proxyHost = yourserver fue inesperado en este momento". Puse la información del proxy en% SBT_OPTS% y funcionó.
Descubrí que al iniciar IntelliJ IDEA desde la terminal, me permitía conectarme y descargar a través de Internet. Para comenzar desde la terminal, escriba:
$ idea
En Mac OS X / El Capitan puedes establecer variables de entorno Java:
$launchctl setenv _JAVA_OPTIONS "-Dhttp.proxyHost=192.168.1.54 -Dhttp.proxyPort=9999"
En el entorno de windows simplemente agregue la siguiente línea en el sbt / sbtconfig.txt
-Dhttp.proxyHost=PROXYHOST
-Dhttp.proxyPort=PROXYPORT
-Dhttp.proxyUser=USERNAME
-Dhttp.proxyPassword=XXXX
o el equivalente de Https (gracias a los comentarios)
-Dhttps.proxyHost=PROXYHOST
-Dhttps.proxyPort=PROXYPORT
-Dhttps.proxyUser=USERNAME
-Dhttps.proxyPassword=XXXX
Encontré un elemento en la sección de preguntas frecuentes del Activador de Lightbend útil. Estoy usando Activator, que a su vez usa SBT, así que no estoy seguro si esto ayuda a los usuarios solo con SBT, pero si usa Activator, como yo, y está detrás de un proxy, siga las instrucciones en la sección "Behind A Proxy" del PREGUNTAS MÁS FRECUENTES:
https://www.lightbend.com/activator/docs
En caso de que el contenido desaparezca, aquí hay un copiar y pegar:
Cuando se ejecuta el activador detrás de un proxy, se necesita alguna configuración adicional. Primero, abra el archivo de configuración del activador, que se encuentra en el directorio de inicio de su usuario en ~ / .activator / activatorconfig.txt. Tenga en cuenta que este archivo puede no existir. Agregue las siguientes líneas (una opción por línea):
-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"
Para proporcionar una respuesta que funcionará para todos los usuarios de Windows:
Agregue lo siguiente a su sbtconfig.txt (C: / Archivos de programa (x86) / sbt / conf)
-Dhttp.proxyHost=XXXXXXX -Dhttp.proxyPort=YYYY -Dhttp.proxySet=true -Dhttps.proxyHost=XXXXXXX -Dhttps.proxyPort=YYYY -Dhttps.proxySet=true
Reemplace XXXXXXX con su proxyHost, y ambos YYYY con su proxyPort.
Si obtiene el error "No se pudo encontrar o cargar la clase principal", debe configurar su JAVA_HOME:
set JAVA_HOME=C:/Progra~1/Java/jdkxxxxxx
Cuando esté en Windows de 64 bits, use:
Progra ~ 1 = ''Archivos de programa''
Progra ~ 2 = ''Archivos de programa (x86)''
Para usuarios de Windows, ingrese el siguiente comando:
set JAVA_OPTS=-Dhttp.proxySet=true -Dhttp.proxyHost=[Your Proxy server] -Dhttp.proxyPort=8080
SBT utiliza HTTP / HTTPS / SFTP / SSH y otro tipo de conexiones a un repositorio. entonces, cuando estén detrás de un proxy, estos protocolos deberían estar disponibles.
En la mayoría de los casos simples en Windows, solo necesita pasar opciones de parámetros de proxy a JVM, como:
java -Dhttp.proxyHost=myproxy -Dhttp.proxyPort=8080
Que hará.
Pero si no, hay algunas cosas que debes tener en cuenta:
- ya sea si está haciendo una conexión HTTPS al repositorio.
- si se han importado los certificados de servidor a los eventos de jre
- si su proxy reemplazará sus certificados de servidor
para resolver primero, debe pasar el parámetro proxy https a jvm, como:
java -Dhttps.proxyHost=myproxy -Dhttps.proxyPort=8080 -Djavax.net.ssl.trustStore=${TRUST_STORE_PATH}
para resolver el segundo, debe importar la ca. hay muchos consejos
para resolver el tercero, quizás podría considerar usar un proxy de autenticación.
Para simplificar la configuración de SBT, proporciona sbtconfig.txt y sbtops en el directorio conf, míralo.
Referencia:
http://www.scala-sbt.org/0.13/docs/Setup-Notes.html
http://www.scala-sbt.org/1.0/docs/Publishing.html
Utilicé (este es un entorno Unix):
export SBT_OPTS="$SBT_OPTS -Dhttp.proxyHost=myproxy-Dhttp.proxyPort=myport"
Esto no funcionó para mi configuración:
export JAVA_OPTS="$JAVA_OPTS -Dhttp.proxyHost=myproxy-Dhttp.proxyPort=myport"
En el archivo sbt.sh:
JAVA_OPTS environment variable, if unset uses "$java_opts"
SBT_OPTS environment variable, if unset uses "$default_sbt_opts"
Pero aparentemente se usa SBT_OPTS en lugar de JAVA_OPTS
Utilizando
sbt -Dhttp.proxyHost=yourServer-Dhttps.proxyHost=yourServer -Dhttp.proxyPort=yourPort -Dhttps.proxyPort=yourPort
funciona en Ubuntu 15.10 x86_64 x86_64 GNU / Linux.
Reemplace su servidor por la dirección correcta sin los prefijos http: // ni https: // en Dhttp y Dhttps, respectivamente. Recuerde evitar las comillas. No hay usr / pass incluido en la línea de código, para incluir que solo agregue -Dhttp.proxyUser = usr -Dhttp.proxyPassword = pase con los mismos criterios de tipeo. Gracias @Jacek Laskowski !. Aclamaciones
sbt
funciona de una manera bastante estándar en comparación con la forma en que generalmente se configuran otros proyectos basados en JVM.
sbt es, de hecho, dos "subsistemas": el iniciador y el núcleo. Por lo general, xsbt.boot.Boot
se ejecuta antes de que el núcleo se inicie con las funciones que todos conocemos (y algunos incluso).
Por lo tanto, se trata de cómo se ejecuta sbt, que dice cómo se puede configurar un proxy para el tráfico de red HTTP, HTTPS y FTP.
La siguiente es la lista completa de las propiedades disponibles que se pueden establecer para cualquier aplicación Java, incluyendo sbt, que indica a la API de Java que enrute la comunicación a través de un proxy:
- http_proxy
- http_proxy_user
- http_proxy_pass
- http.proxyHost
- http.proxyPort
- http.proxyUser
- http.proxyPassword
Reemplace http
arriba con https
y ftp
para obtener la lista de las propiedades de los servicios.
Algunas sbt
comandos sbt
usan JAVA_OPTS
para configurar las configuraciones de proxy con -Dhttp.proxyHost
y -Dhttp.proxyPort
entre las demás (enumeradas anteriormente). Ver Java Networking y Proxies .
Algunos scripts vienen con su propia forma de configurar la configuración del proxy utilizando la propiedad .sbtopts
, .sbtopts
o (solo en Windows) %SBT_HOME%/conf/sbtconfig.txt
. Puede usarlos para configurar específicamente sbt para usar proxies mientras que las otras aplicaciones basadas en JVM no se ven afectadas en absoluto.
Desde la herramienta de línea de comandos 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)
Y aquí viene un extracto de 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.
Tenga cuidado con sbtconfig.txt
que solo funciona en Windows solamente . Cuando utiliza cygwin
el archivo no es consultado y deberá recurrir a otros métodos.
Estoy usando sbt con el siguiente script:
$JAVA_HOME/bin/java $SBT_OPTS -jar /Users/jacek/.ivy2/local/org.scala-sbt/sbt-launch/$SBT_LAUNCHER_VERSION-SNAPSHOT/jars/sbt-launch.jar "$@"
El objetivo de la secuencia de comandos es utilizar la última versión de sbt creada a partir de las fuentes (es por eso que estoy usando /Users/jacek/.ivy2/local/org.scala-sbt/sbt-launch/$SBT_LAUNCHER_VERSION-SNAPSHOT/jars/sbt-launch.jar
) con la propiedad $SBT_OPTS
como medio para pasar propiedades de JVM a los usos de JVM sbt.
El script anterior me permite configurar el proxy en la línea de comando en MacOS X de la siguiente manera:
SBT_OPTS="-Dhttp.proxyHost=proxyhost -Dhttp.proxyPort=9999" sbt
Como puede ver, hay muchos enfoques para establecer proxy para sbt que todo se reduce para establecer un proxy para los usos de JVM sbt.
sbt
respeta las variables de entorno habituales para la configuración de proxy http:
export JAVA_OPTS="$JAVA_OPTS -Dhttp.proxyHost=yourserver -Dhttp.proxyPort=8080 -Dhttp.proxyUser=username -Dhttp.proxyPassword=password"
( Eso es por supuesto, suponiendo Unix (Linux / OSX, etc.). En Windows, simplemente podría establecer la misma variable de entorno ( %JAVA_OPTS%
) de la manera habitual en Windows ) .
Luego ejecute sbt
como de costumbre:
sbt
Cambiar entre proxy / no-proxy debe ser una cuestión de configurar un pequeño script que pueda ''sorber'' cuando lo necesite.
Gotchas
- No incluya "http: //" en el valor de
yourserver
- No incluya el puerto en el valor de
yourserver
- Probablemente también quiera incluir
https.proxyHost
yhttps.proxyPort
ya que muchas cosas funcionan sobre https - Si su proxy requiere autenticación, ni siquiera se moleste en intentarlo a menos que solo utilice la Autenticación Básica ya que SBT no soporta nada más. ¡También siempre ten cuidado con las credenciales de mensajes de texto claras en variables de entorno! Asegúrese de eliminar los comandos de su .bash_history usando un método de edición de texto que no creará archivos de rastreo (técnicamente debe
shred
osrm
todo el archivo). Si está en Windows, no se preocupe, su seguridad ya está desordenada, no puede hacer más daño.