2012-01-24 25 views
16

Zainspirowany przykładami on the SBT github page, próbuję przekierować wygenerowany przez stdout z przebiegu w trybie interaktywnym SBT do pliku.Przekieruj standardowe wyjście z SBT do pliku

Oto moja nieudana próba:

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

Próbowałem zarówno z jak i bez ! na końcu. Próbowałem zarówno pojedynczych, jak i podwójnych cytatów. Nic nie działa - zachowuje się tak, jakby pominięto #> file(..., rzeczy zostały wydrukowane tylko na standardowe wyjście, nie utworzono pliku.

Odpowiedz

10

Nie jestem ekspertem SBT, ale nie wydaje mi się to odpowiednią funkcją.

> run interpretuje wszystko po nim jako argumenty pliku. #> wydaje się być częścią biblioteki sbt, do użytku wewnątrz plików sbt projektu, a nie na ich zachęcie.

poruszanie się po tym, ja wyjść SBT i używać zewnętrznej powłoki, aby to zrobić:

$ sbt "run" > run_output.txt 
+0

Pomimo tego podejścia działa w ogóle, to naprawdę nie jest najlepszym rozwiązaniem w niektórych przypadkach narożnych. Mam przypadek użycia skryptów Scala, co w skrócie oznacza, że ​​wyjście skryptu Scala miesza się z wyjściem z SBT ... powodując wielki bałagan, którego nie można przetworzyć w następnym etapie potoku. Idealnie byłoby, gdybyśmy mogli powiedzieć SBT, aby na przykład napisać stdout na stderr. W ten sposób dane wyjściowe ze skryptów Scala nie będą mieszane przez komunikaty informacyjne i komunikaty o błędach pochodzące z SBT. –

3

Nie wiem, jak to zrobić z poziomu konsoli SBT, ale z linii poleceń powłoki można uchwycić sbt wyjście przez:

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

Możesz spróbować.

sbt test >> "log.txt" 
1

Ten pracował dla mnie:

sbt | tee log.txt 
Powiązane problemy