2016-07-18 1 views
1

나는 ~ ;task1; task2;에 만족하지 않으므로 변경 사항을 감시하고 작업을 실행하는 고유의 작업을 구현하고 싶습니다. 나는. 일부 파일을 감시하고 변경되는 내용에 따라 일부 작업을 실행하는 sbt 작업이 필요합니다.sbt에서 사용자 정의 감시 태스크를 구현하는 방법은 무엇입니까?

그것은 단지 한 번 몸 전에 작업 1을 실행하고 있기 때문에

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

이 작동하지 않습니다. dynTask은 루프를 벗어나지 않고 여러 번 작업을 실행하기 때문에 작동하지 않습니다. 정확하게, 질문은 다음 구현하는 방법입니다 :

def execute[T](task: Initialize[Task[T]]): T 
def isEnterNotPressedYet: Boolean 

배경 :

내가 JS, 스칼라, SBT-권총을 사용하는 웹 응용 프로그램이 있습니다. 일부 리소스는 핫 리로딩을 지원합니다 (그러나 여전히 컴파일이 필요합니다!). 나는. * .js 파일이 변경되면 compileJs 작업을 호출하려고합니다. .scala 파일이 변경되면 re-start 작업을 호출하려고합니다. 그러나 sbt watch는 프로젝트 당 하나의 리소스 만 감시합니다 ...

답변

관련 문제