惯用sbt自定义增量工作标准

时间:2013-04-19 22:14:04

标签: scala sbt

我希望我的编译任务依赖于相当昂贵的任务myTask,但只应在自上次运行以来自定义指标发生变化时运行。假设我有一个函数myCriterion : State => String,它返回我的自定义标准的规范表示。

理想情况下,我希望编译依赖于myTask onlyIf myCriterion changed或类似的东西。我看到Tracked.inputChangedFilesInfo.*周围的一堆内容似乎相关,但我找不到任何关于如何使用它们的说明。在幕后,我希望myTask运行myCriterion,如果它存在则检查磁盘上的缓存版本,如果它们匹配,则根本不执行任何操作。如果它们不匹配,我希望它运行myTask的逻辑,然后将myCriterion的当前输出写入缓存,这样我们下次不必要地执行任务(因为它每次只产生相同的输出)。无论myTask是否变成nop,编译都应该明显发生。

1 个答案:

答案 0 :(得分:0)

我想我已经弄明白了如何使用Tracked来表达它的价值:如果我写Tracked.inputChanged(somePath) { case (changed, state: String) => if (changed) ... }并将结果应用于String(带Equiv[String] 1}}范围内的实例)然后它为我做了更改检查。我仍然对将任务与这种模式联系起来的惯用方法感到好奇。