Gradleでwarを作るときに入れるリソースを環境で切り替えたい

環境毎に変化するリソースファイルがあって、今までsrc/main/resourcesとかsrc/main/webappとかにcopyタスクでコピーしてたけども、VCSに変更扱いにされたりして戻したりするのが面倒だった。

調べても同じ事考えてる人がなかなか出てこないし、似たような事を考えてる人はいたけどやっぱり何かcopyしてるしで、できないんかなーでもできそうなんだけどなーとか悩んでたけども、ドキュメントをよく読んでないだけでした。そりゃお前しか悩まないわけだ。

明日の自分のためにメモしておく。

src/main/resources

http://www.gradle.org/docs/current/userguide/java_plugin.html

project.sourceSets.main.resources.srcDirs = ["path/to/my/resources"]

sourceSetsはjavaプラグイン入れてると使える。

ごっそり上書きするならこれで良さそう。
ファイルが膨大だけど、ちょっとした差分しかない場合はディレクトリを切って複数指定で頑張るか、filterで書き換えるようにするか。

src/main/webapp

http://www.gradle.org/docs/current/userguide/war_plugin.html

project.webAppDirName = "path/to/my/webapp"

webAppDirNameはwarプラグインを入れてると使えるようになる変数で/src/main/webappがデフォルト値。
今回は1.10を使ってたけどもprojectをつけないと2.0では削除されるよ的な警告が出た気がする。
と、調べてみたらstackoverflowで出てた

おわり

このpath周りはだいたい変数が用意されてて良い感じに上書きできたりするみたい。
あとは-Pxxx=productionとかビルド時に指定して、プロパティからgetして、値を見て振り分ければ良いわけですね・・・