Scala 用于持续集成的Sbt:打印stacktrace并在出错时退出

Scala 用于持续集成的Sbt:打印stacktrace并在出错时退出,scala,continuous-integration,sbt,Scala,Continuous Integration,Sbt,我正在使用Sbt进行持续集成(竹子)。我想检查是否设置了所有环境变量,或者获取一条描述性错误消息。我采用以下方法: def env(n: String) = Option(System.getenv(n)).getOrElse(throw new RuntimeException("Undefined required environment variable " + n)) val mySetting = env("REQUIRED_ENV_VAR") + "..." 相反,我得到了 [e

我正在使用Sbt进行持续集成(竹子)。我想检查是否设置了所有环境变量,或者获取一条描述性错误消息。我采用以下方法:

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
两个问题:

  • 如何获得完整的stacktrace而不需要使用“last”(简单的在竹子上做不到)
  • 如果项目加载失败,如何告诉sbt退出,而不是请求重试等

  • 如果输入流将通过(此类黑客)技巧“关闭”,sbt将不会启用交互模式:

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

    #!/bin/sh
    sbt "$@" < /dev/null
    
    #/垃圾箱/垃圾箱
    sbt“$@”
    在sbt v1.3.9(可能更早)中,有一个
    --batch
    开关

    $ sbt --help
    Usage: sbt [options]
      ...
      --batch             disable interactive mode
      ...
    

    谢谢,但是如果在构建对象初始化过程中发生错误,它将不起作用。我得到的错误和原来的帖子一样。
    $ sbt --help
    Usage: sbt [options]
      ...
      --batch             disable interactive mode
      ...