プロパティファイルで定義されたキーを次のような変数として使用したい:
key1= value1
key2= value2
key3= key1
私は試してみます:
key3= {key1}
また
key3= ${key1}
しかし、それは機能しません!
何かアイデアをお願いします?
プロパティファイルで定義されたキーを次のような変数として使用したい:
key1= value1
key2= value2
key3= key1
私は試してみます:
key3= {key1}
また
key3= ${key1}
しかし、それは機能しません!
何かアイデアをお願いします?
Java の組み込みの Properties クラスは、探していることを行いません。
しかし、それを行うサードパーティのライブラリがあります。 Commons Configurationは、私が使用してある程度成功したものです。PropertiesConfiguration
クラスはまさにあなたが探していることを行います。
したがってmy.properties
、次のような名前のファイルがある場合があります。
key1=value1
key2=Something and ${key1}
このファイルを使用するコードは次のようになります。
CompositeConfiguration config = new CompositeConfiguration();
config.addConfiguration(new SystemConfiguration());
config.addConfiguration(new PropertiesConfiguration("my.properties"));
String myValue = config.getString("key2");
myValue
となります"Something and value1"
。
プロパティ ファイルでキーの値を定義すると、リテラル値として解析されます。したがって、を定義するkey3= ${key1}
と、key3 の値は「${key1}」になります。
http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Properties.html#load(java.io.InputStream )
私はcsdに同意します。プレーンな構成ファイルはあなたの選択ではないかもしれません. 私は Apache Ant ( http://ant.apache.org/ ) を使用することを好みます。ここでは、次のようなことができます。
<property name="src.dir" value="src"/>
<property name="conf.dir" value="conf" />
その後、キー「src.dir」を使用する場合は、次のように呼び出します。
<dirset dir="${src.dir}"/>
Apache Ant を使用するもう 1 つの利点は、.properties ファイルを Ant ビルド ファイルにロードできることです。次のようにインポートするだけです:
<loadproperties srcFile="file.properties"/>
.xmlさらに良い: 最新の Maven を使用します。Mavenを使用すると、いくつかのきちんとしたことができます。この場合、次の行を含む .properties ファイルを作成できます。
key1 = ${src1.dir}
key2 = ${src1.dir}/${filename}
key3 = ${project.basedir}
Maven の pom.xml ファイル (プロジェクトのルートに配置) で、次のようにする必要があります。
<resources>
<resource>
<filtering>true</filtering>
<directory>just-path-to-the-properties-file-without-it</directory>
<includes>
<include>file-name-to-be-filtered</include>
</includes>
</resource>
</resources>
...
<properties>
<src1.dir>/home/root</src1.dir>
<filename>some-file-name</filename>
</properties>
そうすれば、ビルド時にキーの値が変更されます。つまり、コンパイル後にプロパティ ファイル内にこの値が含まれることになります。
key1 = /home/root
key2 = /home/root/some-file-name
key3 = the-path-to-your-project
pom.xml ファイルと同じディレクトリにいる場合は、次の行でコンパイルします: mvn clean install -DskipTests