読者です 読者をやめる 読者になる 読者になる

PlayFramework 小ネタまとめ

Play Framework Eclipse

プラグインとかビルドの設定すぐ忘れちゃうので覚書。 無記載の場合バージョン2.4.xの話だけど、たぶんそんなに変わらない。

Eclipseプロジェクトを生成

build.sbtに次を追加

// Compile the project before generating Eclipse files, so that generated .scala or .class files for views and routes are present
EclipseKeys.preTasks := Seq(compile in Compile)
// Java project. Don't expect Scala IDE
EclipseKeys.createSrc := EclipseCreateSrc.ValueSet(EclipseCreateSrc.ManagedClasses, EclipseCreateSrc.ManagedResources)
// Use .class files instead of generated .scala files for views and routes
EclipseKeys.projectFlavor := EclipseProjectFlavor.Java

sbt eclipse with-source=trueで生成.

Eclipseでプロジェクトを開いたらビルドパスにtarget/scala-2.11/classes_managedを追加. (LibrariesにAdd Class Folder)

JUnitテストの並列実行を切る

機能テストとかで困る場合用。build.sbtに次を追加。

parallelExecution in Test := false
Jacocoでテストカバレッジをとる

https://github.com/sbt/jacoco4sbt

project/plugins.sbtに次を追加

addSbtPlugin("de.johoop" % "jacoco4sbt" % "2.2.0")

build.sbtに次を追加

// 念のため並列実行も切っておく
parallelExecution in jacoco.Config := false
jacoco.settings

jacoco:coverカバレッジ生成。出力はtarget/scala-2.11/jacoco

JPAを使う場合の注意

persistence.xmlは対象のエンティティクラスが同じJarに入ってないとだめらしい。 何も設定せずにsbt distするとconfディレクトリが配布パッケージにできて、プロジェクトのconfディレクトリの中身がコピーされるが、 ここにpersisitence.xmlを入れとくと上記問題に引っかかる。

そこで、build.sbtに次を追加してconfディレクトリを配布パッケージに作らない。(Jarにはちゃんと入るので動く。)

PlayKeys.externalizeResources := false

よく読んだから公式のDocumentation[2.4.x 日本語], [2.5.x 英語]にちゃんと書いてある。 気づかなくて小一時間ハマった。

PlayFrameworkにDIしてもらう

GuiceAbstractModuleを継承したクラスのFQCNapplication.confに書いておけばPlayFrameworkでDIしてくれる。 演算子の雰囲気からわかる通り、複数のモジュールを追加できる。

play.modules.enabled += "modules.HelloModule"

(2.5.x以降限定?) デフォルト(ルート)パッケージにクラス名Moduleでモジュールを作っておけば上記設定さえ書かなくても動く。

アノテーションのつけ方とかはGuiceそのものなので割愛。 nodchipさんの記事心地良すぎるDependency Injectionライブラリ Guiceが参考になる。 英語が苦にならない人はGuice Wiki見よう。

Javadocを生成してもらう

何も設定しないとsbt docでscaladocになる。build.sbtに次を追加。

sources in (Compile, doc) ~= (_ filter (_.getName endsWith ".java"))

Eclipseに入れておくといいプラグイン

Eclipse

随時更新。ほぼJava開発者向け。

全般

TM Terminal

リンク: TM Terminal | Eclipse Plugins, Bundles and Products - Eclipse Marketplace

ビューにターミナル(Windowsならコマンドプロンプト)を追加してくれる。特にsbtなんかを使うときにはあると便利。コマンド直接打ちたいことも結構あるよね。Eclipse Foundation製で何となく安心?Ctrl +Alt + Tでさっと起動できるのもいいところ。Project ExplorerやPackage Explorerビューの右クリックメニューの`Show in Local Terminal`も便利。(右クリックしたフォルダでターミナルが開く)

Java関連

Quick JUnit

リンクQuick JUnit Plugin for Eclipse

開いてるJavaコード <=> JUnitテストコードをCtrl+9で一発移動できる。さらにテストコードがない場合作ってくれる。JUnitテストコード上でCtrl+0でテスト実行。カーソル位置に応じてテスト範囲を変えてくれる。(クラスのスコープにカーソルがあればクラス全体テスト、関数のスコープにカーソルがあればその関数だけテスト)これがないとテストやってられないくらい便利。

Play Framework 2.5.x をEclipseで快適に使えるようにするまで (1)

Play Framework

現時点で最新のPlay Framework 2.5.12を対象に環境構築のメモ。Windows向け&Javaで開発です。

Part.1はとりあえずサンプルを動かしてみるところまで。

続きを読む