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    (本番環境用)