3

config.propertiesビルド プロセスで多数のファイルが呼び出される状況があります。

  • config.properties.dev
  • config.properties.qa
  • config.properties.prod1
  • config.properties.prod2

現在のインストール プロセスではconfig.properties、その環境の を にコピーしますconfig.properties。(私はこれについてわくわくしていませんが、これは私が今取り組まなければならないことです。)

これらのファイルはすべて、3 つまたは 4 つのプロパティを除いてまったく同じです。残念ながら、これらはすべてのファイルで常に同じプロパティであるとは限りません。やりたいことは、次のようなマスターをセットアップすることです。 config.properties

主人config.properties

prop1 = value1
prop2 = value2
prop3 = value3
prop4 = value4

次に、マスターと異なるプロパティのみを含む環境ごとに個別の `config.properties を用意します。

config.properties.prod:

prop3 = value3.1
prop4 = value4.1

config.properties.qa

prop2 = value2.1
prop3 = value3.2

展開を行うときに、2 つのファイルを連結できる可能性があると考えました。

cat config.properties.$env >> config.properties

そして、この方法で結合されたプロパティ ファイルを取得します。

組み合わせたconfig.properties

prop1 = value1
prop2 = value2
prop3 = value3
prop4 = value4
prop2 = value2.1
prop3 = value3.2

残念ながら、Java がそのようなファイルをどのように処理するかはわかりません。最初に定義されたプロパティを取るか、最後に定義されたプロパティを取るか、または動作が完全に未定義か?

これがうまくいかない場合、構成スクリプト (通常は BASH スクリプト) で複数のプロパティを 1 つのプロパティ ファイルに結合する最善の方法は何ですか?

4

2 に答える 2

1

@home が述べたように、Properties は Map であるため、最後のもの (ファイルの最後) が優先されます。

ただし、結果に各プロパティのインスタンスが 1 つだけ含まれるように、ファイルを統合しながら適切な値を解決する方がよいように思えます。そうすれば、プロパティ ファイルが使用されると、推測する必要がなくなります。

これらをどのように解決するかは、もちろんあなた次第です。

于 2013-01-08T17:54:24.373 に答える
0

また、apache commons-configuration プロジェクトも参照してください。さまざまな構成ファイルを組み合わせる機能が組み込まれています。

于 2013-01-08T18:16:31.537 に答える