2012-06-27 6 views
5

Quiero utilizar una clave definida en el archivo de propiedades como una variable de la siguiente manera:Propiedades: Use la tecla tan variables

key1= value1 
key2= value2 
key3= key1 

Trato:

key3= {key1} 

o

key3= ${key1} 

¡Pero no funciona!

¿Alguna idea por favor?

Respuesta

12

La clase de Propiedades integradas de Java no hace lo que estás buscando.

Pero existen bibliotecas de terceros que sí lo tienen. Commons Configuration es uno que he usado con cierto éxito. La clase PropertiesConfiguration hace exactamente lo que estás buscando.

lo que podría tener un archivo llamado my.properties que tiene este aspecto:

key1=value1 
key2=Something and ${key1} 

código que utiliza este archivo podría tener este aspecto:

CompositeConfiguration config = new CompositeConfiguration(); 
config.addConfiguration(new SystemConfiguration()); 
config.addConfiguration(new PropertiesConfiguration("my.properties")); 

String myValue = config.getString("key2"); 

myValue habrá "Something and value1".

0

Cuando define el valor de una clave en el archivo de propiedades, se analizará como un valor literal. Por lo tanto, cuando defina key3= ${key1}, key3 tendrá el valor de "$ {key1}".

http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Properties.html#load(java.io.InputStream)

Estoy de acuerdo con la CDS, el fichero de configuración normal no puede ser su elección. Yo prefiero usar Apache Ant (http://ant.apache.org/), donde se puede hacer algo como esto:

<property name="src.dir" value="src"/> 
<property name="conf.dir" value="conf" /> 

Luego, más tarde cuando se desea utilizar el botón 'src.dir', acaba de llamarlo algo como esto:

<dirset dir="${src.dir}"/> 

Otra cosa buena sobre el uso de Apache Ant es que también puede cargar el archivo .properties en el archivo de compilación Ant. Simplemente impórtalo así:

<loadproperties srcFile="file.properties"/> 
0

.xml. Incluso mejor: utilice el último Maven. Puedes hacer algunas cosas lindas con maven. En este caso se puede hacer presentar una .properties con esta líneas en él:

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

en pom del experto.archivo XML (que se encuentra en la raíz de su proyecto) que debe hacer algo como esto:

<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> 

De esa manera se habría valores de clave cambiado en tiempo de construcción, lo que significa que después de compilar tendrá estos valores dentro de sus propiedades archivo:

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

compilar con esta línea cuando se está en el mismo directorio que pom.xml: mvn instalación limpia -DskipTests

Cuestiones relacionadas