2016-07-18 52 views
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手表每个项目只有一组观看资源...

回答

相关问题