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

问题描述 投票:7回答:2

我正在使用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 "的情况下获得完整的stacktrace(简单的在Bamboo上做不到)?
  2. 如果项目加载失败,如何告诉Sbt退出,而不是要求重试等?
scala continuous-integration sbt
2个回答
8
投票

如果输入流被 "关闭"(这样的黑客技巧),sbt将无法启用交互模式。

cat /dev/null | sbt taskname

或者如果你不能使用管道,可以创建一个shell脚本,像这样。

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

0
投票

在sbt v1.3.9(可能是更早的版本),有这样一个脚本 --batch 开关。

$ sbt --help
Usage: sbt [options]
  ...
  --batch             disable interactive mode
  ...
© www.soinside.com 2019 - 2024. All rights reserved.