2012-01-24 15 views
16

Inspirado por los ejemplos on the SBT github page, estoy tratando de redirigir el stdout producido desde una ejecución en modo interactivo de SBT a un archivo.redireccionar stdout desde SBT ejecutar al archivo

Aquí está mi intento fallido:

> run #> file('/Users/dsg/temp/temp.txt') ! 

He intentado tanto con como sin el ! al final. Intenté tanto comillas simples como dobles. Nada funciona, simplemente se comporta como si se omitiera el #> file(..., las cosas solo se imprimen en stdout, no se crea ningún archivo.

Respuesta

10

No soy un experto en SBT, pero esta no parece ser la característica correcta.

> run interpreta todo como argumentos de archivo. #> parece ser parte de la biblioteca sbt, para usar dentro de los archivos sbt de su proyecto, no en su solicitud.

conseguir alrededor de esto, salgo de SBT, y utilizo mi concha externa para hacer esto:

$ sbt "run" > run_output.txt 
+0

A pesar de este enfoque funciona, en general, en realidad no es el mejor enfoque en ciertos casos de esquina. Tengo un caso de uso que involucra scripts de Scala que, en pocas palabras, implica que la salida del script de Scala se mezcla con la salida de SBT ... lo que resulta en un gran lío que no puede ser procesado por el próximo paso en la tubería. Idealmente, deberíamos ser capaces de decirle a SBT que escriba stdout en stderr, por ejemplo. De esta forma, el resultado de los scripts de Scala no se mezclaría con mensajes informativos y mensajes de error provenientes de SBT. –

3

No sabe cómo hacerlo desde la consola de SBT, pero a partir de la línea de comandos shell que puede capturar la sbt salida a través de:

sbt "test" 2>&1 > test.log 
1

Puede intentar esto.

sbt test >> "log.txt" 
1

Esto funcionó para mí:

sbt | tee log.txt 
Cuestiones relacionadas