2013-06-23 6 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で実行中のアプリケーションで再コンパイルされたクラスを即座にロードします。

私build.sbtは、次のエントリがあります。

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

fork := true 

私が実行している2つのsbtのインスタンスを持っています。 1つはプログラムを実行し、もう1つは変更が検出されるとすべてのクラスをコンパイルします(~compile)。

関連する問題