根据另一个人的结果执行SBT任务

时间:2014-01-14 13:40:00

标签: playframework-2.0 sbt

在我的Play项目中,我尝试在标准Play的test任务之前运行我的JavaScript测试。我编写了一个SBT任务,这个工作正常,但我只想在JavaScript测试通过时运行Play test任务。目前,Play test任务运行JavaScript测试所发生的任何事情。

我的build.sbt如下所示:

val jsTest = taskKey[Int]("jsTest")

jsTest in Test := {
  "karma start karma.conf.js" !
}

test := {
  val exitCode = (jsTest in Test).value
  if(exitCode == 0) {
    (test in Test).value
  }
}

正如我所说,无论test.value如何,始终会执行exitCode。如何以test

的结果为条件jsTest

1 个答案:

答案 0 :(得分:2)

@SethTisue在他提到dynamic task concept in SBT时是对的。

将以下内容添加到build.sbt

lazy val jsTest = taskKey[Int]("jsTest")

jsTest in Test := {
  "karma start karma.conf.js" !
}

test := Def.taskDyn {
  val exitCode = (jsTest in Test).value
  if(exitCode == 0)
    Def.task {
      (test in Test).value
    }
  else Def.task()
}.value

"karma start karma.conf.js" !替换为0或非0时,似乎工作正常。