我正在尝试围绕我的插件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
肯定是在屏幕上做了很多事情。
答案 0 :(得分:2)
不,重复数据删除仍然会发生,因为通常您不希望在此上下文中进行两次编译。如果要进行测试,您可以定义自己的命令或使用脚本插件(正如您现在所做的那样)。