У меня есть проект, построенный с помощью sbt и актеров akka. Я запускаю его с помощью команды «sbt 'run $args'» и хочу, чтобы эта программа возвращала разные коды выхода в зависимости от некоторых условий. Для этих целей я использую System.exit(code) от моего главного актера.
Проблема, которую я не могу решить, заключается в том, что код выхода sbt зависит от аргументов программы: иногда он завершается с ошибкой.
java.lang.RuntimeException: Nonzero exit code returned from runner: 3 at scala.sys.package$.error(package.scala:27)
[trace] Stack trace suppressed: run last compile:runMain for the full output.
[error] (compile:runMain) Nonzero exit code returned from runner: 3
[error] Total time: 5 s, completed Dec 4, 2014 6:50:50 PM
это не красота, но это нормально.
Но в некоторых случаях я запускаю System.exit(3), но sbt завершается с кодом выхода 0 и сообщением [success].
Есть способ заставить sbt выйти с тем же кодом, что и моя программа?
P.S. Я не уверен, но похоже, что основное различие между аргументами заключается в том, что в первом случае программа выполняется в одном потоке, а во втором случае она выполняется в более чем 1 потоке.