2013-06-23 1 views
6

sbt로 개발 ~run 명령을 거의 사용하지 않고 sbt pickup에서 코드가 변경되었습니다. 이것은 매우 편안합니다.akka 및 sbt로 개발하는 방법은 무엇입니까?

이제는 akka으로 약간 연주하겠습니다. ctrl + D가 응용 프로그램을 중지하고 코드를 즉시 가져 왔을 때 기본 sbt의 동작을 되돌릴 수있는 방법이 있습니까?

object Main extends App { 
    println("Starting actors...") 
    val system = ActorSystem("MySystem") 
    val myActor = system.actorOf(Props[Actors.MyActor], name = "myActor") 
    myActor ! "test" 
    // system.shutdown() 
} 

object Actors { 
    class MyActor extends Actor { 
    val log = Logging(context.system, this) 
    def receive = { 
    case "test" => log.info("received test") 
    case _  => log.info("received something else") 
    } 
} 

} 

run~run 명령 등의 경우도 Ctrl 키에 의해 중단 + D도 변화에 코드를 다시로드 :

다음은 샘플 응용 프로그램입니다. ctrl + C 만 전체 sbt를 중지합니다. 내가 플레이 프레임 워크가 이것을 이해하기 때문에, Ctrl + D에서 배우 시스템을 멈추는 것처럼 보이기 때문에 ~run 모드

+2

이 질문에 대한 대답은 아니지만'main'의 끝에'readLine' +'shutdown'을 추가하면 도움이 될 것입니다. – agilesteel

+0

예, 간단한 해결 방법이지만 너무 편안하지는 않습니다. 아무튼 감사 해요. –

답변

4

을 시도 할 수있다. free license for Scala development을 얻을 수 있습니다. 아주 잘, 특히 sbt와 함께 나를 위해 일했습니다. Sbt가 클래스를 컴파일하면 실행중인 Scala 응용 프로그램과 함께 JRebel이 실행중인 응용 프로그램에서 새로 컴파일 된 클래스를 다시 시작하지 않고로드합니다.

javaOptions ++=Seq("-javaagent:/path/to/jrebel.jar","-Drebel.log=true","-Drebel.log.file=/path/to/jrebel.log") 

fork := true 

내가 실행하는 두 SBT 인스턴스가 :

내 build.sbt는 다음과 같은 항목이 있습니다. 하나는 프로그램을 실행하고 다른 하나는 변경이 감지되면 모든 클래스를 컴파일합니다 (~compile).

관련 문제