www software parts org japan sbt

parts - sbt software



Configurando las propiedades del sistema con "sbt run" (4)

Estoy usando una versión bastante reciente de SBT (parece ser difícil averiguar cuál es la versión). Quiero pasar las propiedades del sistema a mi aplicación con sbt run siguiente manera:

sbt -Dmyprop=x run

¿Cómo podría hacer eso?


Creo que lo mejor es usar la variable de entorno JAVA_OPTS:

#update the java options (maybe to keep previous options) export JAVA_OPTS="${JAVA_OPTS} -Dmyprop=x" #now run without any extra option sbt run


El corredor de SBT normalmente no crea nuevos procesos, por lo que también debe indicarle que haga esto si desea establecer los argumentos que se pasan. Puedes agregar algo como esto a tus configuraciones de compilación:

fork := true javaOptions := Seq("-Dmx=1024M")

Hay más detalles sobre los procesos de bifurcación en la documentación de SBT .


Encontré la mejor manera de agregar esto a build.sbt :

// important to use ~= so that any other initializations aren''t dropped // the _ discards the meaningless () value previously assigned to ''initialize'' initialize ~= { _ => System.setProperty( "config.file", "debug.conf" ) }

Relacionado: Al hacer esto para cambiar la configuración de Typesafe que se carga (mi caso de uso), también se debe incluir manualmente la configuración predeterminada. Para esto, la configuración recomendada de Typesafe include "application" no era suficiente, pero include classpath("application.conf") funcionaba. Se debe mencionar que algunos otros pueden querer anular las propiedades del sistema precisamente por el mismo motivo.

Fuente: discussion en la lista de correo sbt


Gracias por el puntero, esto realmente me ayudó a resolver un problema relacionado con Scala Tests.

Resultó que sbt realiza las pruebas cuando hay subproyectos (vea mi code ) y algunas de las pruebas no logran recuperar la propiedad del sistema.

Así que en la sbt -Dsomething="some value" test , algunas de las pruebas fallarían al no encontrar something en las propiedades del sistema (¡ese fue mi URI de DB, por lo que importó un poco!)

Esto me estaba volviendo loco, así que pensé que lo publicaría aquí para futuras referencias de otros (como @akauppi señaló correctamente, ¡hay muchas posibilidades de que "otros" puedan ser yo en unas semanas!).

La solución fue agregar lo siguiente a build.st :

fork in Test := false