IDEAからsbt-appengineを起動し、デバッグする
IDEA と sbt を連携してデバッグしたいと思っていたところ@pomu0325 さんが解決してくれた。 だけど、appengine の起動は sbt コンソールに dev-appserver-start と入力しなくてはならず、面倒。 どうせなら、IDEA のデバッグ時に一緒に appserver も起動して欲しい。 これを解決する方法がわかったので、紹介。
まずは pomu0325 さんのところにも記述があるように "Before launch" の "Run SBT Action" に "dev-appserver-start" を指定する。
このまま IDEA から実行しても appserver は起動するんだけど、dev-appserver-start を実行直後に IDEA が接続に行くらしく、コネクションが張れずにエラーとなってしまう。
ということは、コネクションを張るタイミングを遅らせてあげればいいはず。
MyProject/project/build/Project.scala に以下を追記。
override def devAppserverStartTask(args:Seq[String]) = task
これによって dev-appserver-start を実行後、5 秒(5000ms)スリープする。 この 5 秒というのは各自のマシンスペックと相談して、適当に変更してください。
あとは sbt で reload 後、IDEA でデバッグするだけ。 appserver 起動後に IDEA がコネクションを張りに行くはずです。
余談だけど、こんな記述をしておくとちょっと楽できるかも?
lazy val start = devAppserverStartAction
lazy val stop = devAppserverStop
sbt で dev-appserver-start のエイリアスとして start を定義してます。同様に stop も。 appserver の起動は IDEA から可能だけど、sbt の appserver を停止するときに stop が役立つかも?