第二次调用任务以产生副作用

时间:2015-12-06 12:40:45

标签: scala sbt

我正在尝试围绕我的插件https://github.com/fommil/sbt-big-project编写一些测试来断言在各种命令的调用上没有执行不必要的工作。

但是,即使在Def.taskDyn中,似乎也无法再次调用Task。例如在下面,“HELLO”和“GOODBYE”之间没有任何反应,因为来自sbt宏的AST重写显然只是重复使用相同的引用:

val testFastCompileTask = Def.taskDyn {
  (compile in Compile).value
  println("HELLO WORLD!")
  Def.task {
    (compile in Compile).value
    println("GOODBYE WORLD!")
  }
}

有没有办法强制任务第二次运行?

即使创建一个只运行compile的虚拟任务,也不会再次调用compile。我可以确认在sbt REPL中,第二次输入compile 肯定是在屏幕上做了很多事情。

1 个答案:

答案 0 :(得分:2)

不,重复数据删除仍然会发生,因为通常您不希望在此上下文中进行两次编译。如果要进行测试,您可以定义自己的命令或使用脚本插件(正如您现在所做的那样)。