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