menu
書いてる野郎
orebike@gmail.com
環境ごとに設定が違ってそれをmaven側で吸収したい場合がある。 使っているフレームワークで吸収できる部分もあるが最終的には何かの設定の起点が必要になる。
ここをMaven設定によって切り替えるのだ。
書き換え対象を決める。pom.xmlに
<project> ... <build> ... <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> .... </build> ... </project>
と記述。
大体のプロジェクトではsrc/main/resources
あたりに設定ファイル集が格納されるようになっているのでresourceは記述済になっていると思う
ここに
<filtering>true</filtering>
を追記して書き換え機能を使いますよ宣言をする
つまりsrc/main/resources
以下のファイルを書き換えますよというわけ。
何を何に書き換えるかを指定する。
書き換え対象のファイルにプレースホルダとして
hoge_setting = ${maven.hoge.piyo.fuga}
みたいな記述を埋め込む。そうすると${maven.hoge.piyo.fuga}
の部分がmaven側で指定した値に書き換えられるというわけだ
pom.xmlに
<project> ... <properties> <maven.hoge.piyo.fuga>aaaa</maven.hoge.piyo.fuga> </properties> ... </project>
と記述する
properties
要素の子要素のタグ名として置き換えたいプレースホルダに使った文字列を指定する。
その中身に実際に置換する値を入れる
そうすると実際には
hoge_setting = aaaa
という値になる。
自分の場合はmavenが書き換えてますよということを意識するため頭にmaven
とつけている
書き換え実行と言っても、別に実際に対象のファイルが書き換わるわけではなくコンパイルで使われる時に自動的に値に変換されたファイルが使われるだけだ。
なので特に何もする必要は無い
$ mvn package
とかやったら書き換え後の値を使ってコンパイルされる。
Eclipseプロジェクトとして使っていてコンパイルじゃねーんだという場合は
$ mvn resources:resources
とやればよい。