Sbt用于持续集成:打印堆栈跟踪并在出错时退出

nau*_*nau 7 continuous-integration scala sbt

我正在使用Sbt进行持续集成(Bamboo).我想检查所有环境变量是否已设置或获取描述性错误消息.我使用以下方法:

def env(n: String) = Option(System.getenv(n)).getOrElse(throw new RuntimeException("Undefined required environment variable " + n))

val mySetting = env("REQUIRED_ENV_VAR") + "..."
Run Code Online (Sandbox Code Playgroud)

相反,我得到了

[error] java.lang.ExceptionInInitializerError
[error] Use 'last' for the full log.
Project loading failed: (r)etry, (q)uit, (l)ast, or (i)gnore? q
Run Code Online (Sandbox Code Playgroud)

两个问题:

  1. 如何在不需要使用'last'的情况下获得完整的堆栈跟踪(简单的不能在Bamboo上执行)?
  2. 如果项目加载失败而不是要求重试等,如何告诉sbt退出?

And*_*sov 8

如果输入流将被(这样一个hacky)技巧"关闭",sbt将不会启用交互模式:

cat /dev/null | sbt taskname
Run Code Online (Sandbox Code Playgroud)

或者,如果您无法使用管道,请创建如下的shell脚本:

#!/bin/sh
sbt "$@" < /dev/null
Run Code Online (Sandbox Code Playgroud)