属性文件:使用键作为变量

我想使用属性文件中定义的键作为变量,如下所示:

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/ ),您可以在其中执行以下操作:

   

然后当你想使用键’src.dir’时,只需调用它:

  

使用Apache Ant的另一个好处是你也可以将.properties文件加载到Ant构建文件中。 只需像这样导入:

  

.xmlEven更好:使用最新的Maven。 你可以用maven做一些整洁的东西。 在这种情况下,您可以使用以下行创建一个.properties文件:

 key1 = ${src1.dir} key2 = ${src1.dir}/${filename} key3 = ${project.basedir} 

在maven的pom.xml文件中(放在项目的根目录中)你应该这样做:

   true just-path-to-the-properties-file-without-it  file-name-to-be-filtered    ...  /home/root some-file-name  

这样,您可以在构建时更改键值,这意味着在编译之后,您将在属性文件中包含此值:

 key1 = /home/root key2 = /home/root/some-file-name key3 = the-path-to-your-project 

当您与pom.xml文件位于同一目录时,使用此行进行编译:mvn clean install -DskipTests