技術をかじる猫

適当に気になった技術や言語、思ったこと考えた事など。

Playframework 2.1.1 ビルドとテストを非同期に

Playframework でそれなりにプロジェクトの規模が大きくなると無視できなくなるのがビルド時間、、、。
特にUT走らせるとなると、ビルド時間が指数関数的に増えること請け合いです。
しかもコンパイル中はソースの改修もなにもできないという、、、、。

後IDEで InteliJ 使ってると、class とか生成された scala ファイルが増えると、泣きたくなるくらい重くなります。

これらを解決するため、私はたまにプロジェクトルートに下記のようなシェルを入れます。

#!/bin/bash

echo "Clean current"
play clean

echo "Copy to home tmp"
current_dir=`pwd`
dir_name=`basename $current_dir`
rsync -ru ${current_dir} ~/tmp/

echo "clean and testing"
result=${current_dir}/result.txt
cd ~/tmp/
cd $dir_name

play -Dsbt.log.noformat=true clean test > $result

着色してるのはPlayではなくてSBTなんですよねー。
まぁこれでテストは他のディレクトリで実行されてますので、プロジェクトディレクトリは好きに編集ができると。
rsync のコストを下げるために「play clean」してるので InteliJ idea にも優しいです。

実行結果は result.txt に書いてある。
怖いことにデータが残ってると、後から開いたときにまともに読めなくなるのです