play framework(1.2.5)のproductionモードでwarファイルを作成したがプリコンパイルファイルができない
play framework(1.2.5)にて少しはまった事を覚書に記載。
事象としては、application.confにてモードをprodにし、warファイルを作成したにもかかわらず、precompiled配下のtemplateディレクトリができないというものです。
プロジェクトのディレクトリ構成は下記の通り(だいぶ省略)。
myapp - app
- conf
- test
- template ★デフォルトフォルダではなく作成したもの。
warファイルのコマンドは下記のような感じ。
$play war -o <出力先> --zip --exclude .svn:test:template
問題だったのは--excludeにtemplateが入っている部分。
templateディレクトリはwarファイル内には含めず、他のディレクトリ配下に格納し、プロパティファイルでそこを参照する形にしていた。warファイルを作成すると、プロダクションモードだと、通常であれば、「WEB-INF/application/precompiled」配下ににjavaとtemplateディレクトリができるが、templateが作成されない。
できないと何が起こるかというと、画面にアクセスする度(最初だけ?)にログに「precompiledディレクトリにファイルがありません、動的に作成します」的なメッセージが出てしまう。実質、developmentモードのような状態になっていると思われる。
解決方法としては「--exclude」から「template」を削除することで回避できた。
warに含めない予定であれば、templateって名前のディレクトリは作らないほうがよさそうです(バグなんじゃないのか。。。。と思わざるをえない)。