2016-07-18 94 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手錶每個項目只有一組觀看資源...

回答

相關問題