play2.4から、routesその他を書かずにScalaコードだけで手軽にhttp serverを生成、起動できる機能が入ったらしいです。
手軽にちょっとしたmockのサーバー作りたいとか、色んな用途に使えそうですね?
以下、sbtのscalasと組み合わせた最低限のサンプル(18行でいけた)
色んな詳細は解説しないので、コードかドキュメント読んでください。
上記ではscalasでやってますが、おなじようなbuild.sbtとMain.scalaみたいに2つファイル用意しても、もちろん動きます。(その場合のサンプル https://gist.github.com/xuwei-k/bd74a82f4904cc025d2e )
手軽にやるにはmodeをplay.api.Mode.Testにしないと、application.confを読みにいこうとして死ぬのが地味に面倒でした。
ServerConfigのoverloadされてるapplyの中でのConfiguration.loadの最後のallowMissingApplicationConfがtrueか否か、でファイルが存在しなかった場合にエラーにするかどうか?が変わるようです。
- https://github.com/playframework/playframework/blob/2.4.1/framework/src/play/src/main/scala/play/api/Configuration.scala#L41
- https://github.com/playframework/playframework/blob/2.4.1/framework/src/play-server/src/main/scala/play/core/server/ServerConfig.scala
application.confを読みにいくのをmodeをTestにする以外で回避方法は
- それをしないような独自のplay.api.Configurationオブジェクト生成して、デフォルト引数がない方のServerConfigのapplyというかコンストラクタでServerConfigを生成する
- 素直にapplication.confを用意しておくか、"config.file"で明示的にファイル指定する
などでしょうか?
追記: