¿Cómo ejecutar el comando de ensamblaje sbt sin pruebas desde la línea de comando?

89

He leído preguntas: esto y aquello . Sugieren modificar el archivo sbt. Pero quiero ejecutar sbt clean assemblysin pruebas y no modificar los archivos de compilación de sbt. ¿Es posible con sbt? En maven hay -DskipTest=trueparámetro, ¿hay analógico para sbt?

Cereza
fuente
basado en esto y aquello, y la documentación oficial diría que no. O tiene que modificar los archivos de compilación o ejecutar, packageya que eso no ejecuta ninguna prueba.
DB5

Respuestas:

150

Para cualquier propiedad que necesite cambiar en la línea de comando, antepóngala con "set" y envuélvala entre comillas.

Ejemplo para Windows:

sbt "set test in assembly := {}" clean assembly

Ejemplo para Mac:

sbt 'set test in assembly := {}' clean assembly
kshakir
fuente
Editado. Citar es bastante diferente en Windows, por lo que traté de hacer que esta respuesta fuera lo suficientemente genérica para que la gente comenzara usando comillas dobles para esta respuesta específica. En general, el principio es que desea pasar un solo argumento, a menudo sin escapar, a sbttodo su "conjunto ...". También tenga en cuenta que puede pasar múltiples declaraciones "set" como argumentos de línea de comando separados, o por punto y coma separando las declaraciones dentro de un argumento entre comillas.
kshakir
1
En una Mac, sbt 0.13.7 obtengo <set>: 1: error: not found: value assembly [error] Escriba un error en la expresión "¿Es esto realmente un problema de 13.7 vs 13.8?
Metropolis
12
Puede que no sea un sbtproblema de versión, pero debido a una versión anterior sbt-assembly. Prueba el más universal "set test in Test := {}". ¿Qué versión de sbt-assemblyaparece en su pluginsdirectorio? La documentación para ambas 0.11.2 y 0.13.0 tanto digamos que utilizan la misma sintaxis anterior dentro de la build.sbt. Pero supongo que tal vez cuando se usa el complemento anterior, esa configuración puede no estar disponible a través de la consola sbt y, por lo tanto, no en la línea de comandos.
kshakir
5
sbt 'set test in assembly := {}' clean assemblytodavía se ejecuta Scalatest Specs en macos /sbt 1.0
prayagupd
2
Si usted está haciendo esto dentro de un sbtsistema, ejecutar como tres tareas individuales, sin comillas: set test in Test := {}, clean,assembly
MCW