【问题标题】:Sbt for continuous integration: print stacktrace and exit on error用于持续集成的 Sbt:打印堆栈跟踪并在错误时退出
【发布时间】:2012-10-23 09:34:28
【问题描述】:

我正在使用 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

两个问题:

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

【问题讨论】:

标签: scala continuous-integration sbt


【解决方案1】:

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

cat /dev/null | sbt taskname

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

#!/bin/sh
sbt "$@" < /dev/null

【讨论】:

    【解决方案2】:

    在 sbt v1.3.9(可能更早)中有 --batch 开关。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-06
      • 1970-01-01
      相关资源
      最近更新 更多