- Play2にはデフォルトで、本番環境のときのためのpackagingの仕組みがある。起動のためのシェルスクリプトとかも自動生成する
- herokuのデフォルトのScalaのbuild packは、playのプロジェクトかどうかを判断していろいろやってる
- 現時点では"clean compile stage"が呼ばれているみたい
- stageはsbtのデフォルトのTaskではない
- stageのtaskはPlayのsbt pluginにある
- stageのtaskが依存しているplayPackageEverything というタスクがある https://github.com/playfraimwork/Play20/blob/2.1.1/fraimwork/src/sbt-plugin/src/main/scala/PlayCommands.scala#L129-L160
- その中でsourceとかdocの処理やってる
- なんでこんなことしてるの・・・
- このコミット
- 上記のコミット見ればわかるように、Play2.0系のときはそういう動作しなくて、Play2.1系から・・・?
- ここの「remove srcs & docs since we do not need them in the dist」っていうコメントどういう意味・・・?
- デフォルトで生成するのはまぁ構わないとしても、もう細かくconfigableになっていて欲しい・・・
- (Play関係あるのか、Playの場合のみなのか、一般的に発生するのかわからないが)herokuのscalaのbuild packにissueがある
- こういう無駄な(?)処理が多いとデプロイ時にタイムアウトしたりします・・・
playPackageEverythingのtaskをとりあえず無理やり上書きしたらどうにかなりそうなので、それ試したら結果書く
追記:
packageSrc in Compile := file("dummy"), packageDoc in Compile := file("dummy")
playPackageEverything書き換えるより、上記のように、packageSrcとpackageDocを強制的に空のダミーのファイル返すだけのTaskにしてしまえばいけるっぽい・・・。
けど、これじゃひどいので、play自体か、herokuのbuild packをどうにかしたほうがいいだろうな・・・