SBT:即使某个步骤失败也继续

时间:2014-09-11 20:15:09

标签: scala sbt

在我的scala程序的sbt构建期间,我将当前的sha1哈希写入文件,以便我可以从应用程序中轻松使用它。这就是我的build.sbt文件中的样子:

val dummy =  {
   val sha1 = Process("git rev-parse HEAD").lines.head    
   IO.write(file("conf/version.conf"), s"""sha1="$sha1"""")  
}

问题在于,现在构建具有必须安装git命令行的依赖性,否则它将失败,因为它无法执行git命令。

是否有可能在sbt中忽略构建期间发生的错误,并以某种方式将“未知”作为sha1哈希? sbt文档说的是“失败”http://www.scala-sbt.org/0.13.5/docs/Detailed-Topics/Tasks.html,但我不确定这是否适用于我的问题。

1 个答案:

答案 0 :(得分:1)

在大多数情况下,

sbt文件是正常的Scala文件。只需将sha1表达式的结果分配给try / catch

val sha1 = try {
    Process("git rev-parse HEAD").lines.head
  } catch { case e: NonFatal => "unknown" }
IO.write(file("conf/version.conf"), s"""sha1="$sha1"""")