1
我对~ ;task1; task2;
不满意,所以我想实现我自己的任务,监视变化并执行任务。即我需要一个监视某些文件的sbt任务,并根据更改的内容运行一些任务。如何在sbt中实现自定义监视任务?
例如
val task1: Initialize[Task[Int]] = ....
val task2: Initialize[Task[Int]] = ....
myTask := {
log.info("Press Enter to stop watching...")
while(isEnterNotPressedYet) {
if (someFilesChanged)
execute(task1) //start task1 and wait for its termination
else if (someOtherFilesChanged)
execute(task2)
Thread.sleep(watchDuration.value)
}
}
task1.value
不会工作,因为它会执行TASK1身体前后也只有一次。 dynTask
将无法正常工作,因为我想多次执行任务而不会离开循环。准确地说,问题是如何实现以下内容:
def execute[T](task: Initialize[Task[T]]): T
def isEnterNotPressedYet: Boolean
背景:
我有一个使用JS,斯卡拉,SBT-左轮手枪的Web应用程序。有些资源支持热重载(但仍需要编译!),有些则不支持。即如果* .js文件更改,我想调用compileJs
任务。如果.scala文件更改,我想调用re-start
任务。但sbt手表每个项目只有一组观看资源...