【发布时间】:2017-04-05 16:23:57
【问题描述】:
我对@987654321@ 不满意,所以我想实现我自己的任务,监视变化并执行任务。 IE。我需要一个 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、Scala、sbt-revolver 的 Web 应用程序。有些资源支持热重载(但仍然需要编译!),有些则不支持。 IE。如果 *.js 文件发生变化,我想调用 compileJs 任务。如果 .scala 文件发生变化,我想调用 re-start 任务。但是 sbt watch 每个项目只有一组被关注的资源...
【问题讨论】:
标签: sbt