我正在使用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") + "..."
相反,我得到的是
[error] java.lang.ExceptionInInitializerError
[error] Use 'last' for the full log.
Project loading failed: (r)etry, (q)uit, (l)ast, or (i)gnore? q
两个问题。
如果输入流被 "关闭"(这样的黑客技巧),sbt将无法启用交互模式。
cat /dev/null | sbt taskname
或者如果你不能使用管道,可以创建一个shell脚本,像这样。
#!/bin/sh
sbt "$@" < /dev/null
在sbt v1.3.9(可能是更早的版本),有这样一个脚本 --batch
开关。
$ sbt --help
Usage: sbt [options]
...
--batch disable interactive mode
...