Maven2実行で成果物を生成する際、開発、結合テスト環境、本番と環境に合わせて設定を切り替えたい場合
2008/5/16追記 より良い方法をまとめました。
開発では必須だと思うのですが、意外と情報が無いのでまとめてみました。
※例としてプロパティファイルのみ切り替える方法を記載。
1.configフォルダ以下のように分け、上書き変更したいファイルを置く。
src/main/config/config.properties (開発) src/integration/config/config.properties (結合テスト環境) src/production/config.properties (本番)
2.pom.xmlを以下のように記述
<profiles> <profile> <id>development</id> <activation> ↓デフォルト起動設定 <activeByDefault>true</activeByDefault> </activation> <build> <finalName>hoge-development</finalName> <resources> <resource> <directory>src/main/resources</directory> </resource> <resource> <directory>src/main/config</directory> </resource> <resource> <directory>src/main/java</directory> </resource> </resources> ・・・ </profile> <profile> <id>integration</id> <build> <finalName>hoge-integraion</finalName> <resources> <resource> ↓ Pomの性質上、先に記述されたものが後から読み込まれ、config.propetiesが上書きされる <directory>src/integration/config</directory> </resource> <resource> <directory>src/main/resources</directory> </resource> <resource> <directory>src/main/config</directory> </resource> <resource> <directory>src/main/java</directory> </resource> </resources> ・・・ </profile> <profile> <id>production</id> <build> <finalName>hoge</finalName> <resources> <resource> <directory>src/production/config</directory> </resource> <resource> <directory>src/main/resources</directory> </resource> <resource> <directory>src/main/config</directory> </resource> <resource> <directory>src/main/java</directory> </resource> </resources> ・・・ </profile> </profiles>
3.本設定を行ったプロジェクトで、Mavenコマンドの-Pオプションを変更することで設定変更可能となる
※例:warファイルのクリーンパッケージング
$ mvn package clean [-Pdevelopment] (開発環境用) $ mvn package clean -Pintegration (結合テスト環境用) $ mvn package clean -Pproduction (本番環境用)