Tomcat で実行されているアプリケーションがあり、実行する環境 (開発、テスト、および運用) ごとに異なる一連の構成ファイルがあります。ただし、構成ファイルのすべての行が環境間で異なるわけではないため、何かが変更されても更新されない重複した情報が常に存在します。
個別のファイルを環境固有のブロックを持つ 1 つに折りたたむ優れたフレームワーク/ライブラリはありますか? または、これに対処する他の方法はありますか?
Tomcat で実行されているアプリケーションがあり、実行する環境 (開発、テスト、および運用) ごとに異なる一連の構成ファイルがあります。ただし、構成ファイルのすべての行が環境間で異なるわけではないため、何かが変更されても更新されない重複した情報が常に存在します。
個別のファイルを環境固有のブロックを持つ 1 つに折りたたむ優れたフレームワーク/ライブラリはありますか? または、これに対処する他の方法はありますか?
プロパティ ファイルは、私がいつも使用しているものです。これは手動でもソフトウェアでも編集可能であり、Properties オブジェクトはそれ自体を読み込んでファイルシステムに書き出すことができます。javadoc ページは次のとおりです。
http://java.sun.com/j2se/1.4.2/docs/api/java/util/Properties.html
Maven を使用する場合は、そのリソース フィルタリング機能とプロファイルを使用して、デプロイ先の環境ごとにプロパティ ファイルを生成できます。
追加のボーナスとして、maven は Web アプリをデプロイすることもできます。
重複は実際には問題ではありません。中央の構成ファイルを他のファイルに「拡張」させると、長期的にはさらに頭痛の種になる可能性があります。
私のアドバイスは、ant を使用して適切なファイルを適切な場所にロード (コピーおよび移動) してから、アプリを起動することです (戦争にバンドルしますか?)。環境ごとに異なるタスクを用意するだけです。そのため、実行中のタスクに応じて、3 つの構成ファイル (dev.config、test.config、および production.config) が移動され、/WEB-INF フォルダー内の構成が上書きされます。
混乱を避けたい場合は、環境パラメーターのみの個別の構成ファイルを用意することをお勧めします。次に、管理する構成ファイルがもう 1 つあります。これは、構成ファイルの数と各構成ファイルの複雑さの間のトレードオフです。