2010-07-13 12 views
10

Tengo una pregunta sobre Ant y su tratamiento de variables de entorno. Para ilustrar, tengo una pequeña muestra.¿Puede Ant expandir variables de entorno desde un archivo de propiedades?

Dado el fichero de construcción Ant test.xml:

<project name="myproj" default="testProps"> 

    <property environment="env"/> 

    <target name="testProps"> 
      <echo message="${env.MyEnvVar}"/> 
      <echo message="${MY_PROPERTY}"/> 
    </target> 
</project> 

y el archivo de las propiedades test.props:

MY_PROPERTY=${env.MyEnvVar} 

Ahora establece la variable de entorno MyEnvVar a algún valor (foo en mi caso) y ejecutar Ant usando esta línea de comando:

ant -f test.xml -propertyfile test.props testProps 

El resultado que obtengo es:

[echo] foo 
[echo] ${env.MyEnvVar} 

Lo que me gustaría saber es si hay alguna manera de estructurar las propiedades de archivo de entrada de tal manera que llegue

[echo] foo 
[echo] foo 

Es decir, me gustaría nombrar una variable de entorno en las propiedades archivo que se reemplaza dentro del script Ant. Nota: Sé cómo acceder a las variables de entorno directamente (como se hace aquí). Lo que tengo que hacer es utilizar un conjunto de scripts Ant que esperan una colección de propiedades en un entorno que define las mismas propiedades usando diferentes nombres. Por lo tanto, la idea de "puentearlos" en un archivo de propiedades.

Estoy usando Ant versión 1.6.5.

Respuesta

22

que necesita para leer el archivo test.props propiedad después el medio ambiente - se puede hacer por medio de otra tarea property, es decir, añadir

<property file="test.props" /> 

después de su property environment tarea existente.

en su totalidad:

<property environment="env" /> 
<property file="test.props" /> 

<target name="testProps"> 
    <echo message="${env.MyEnvVar}"/> 
    <echo message="${MY_PROPERTY}"/> 
</target> 

Cuando proporciona el archivo de propiedades en la línea de comandos esta se procesa antes de que el contenido de la construcción, pero en ese momento ${env.MyEnvVar} aún no está establecido.

+2

No es exactamente lo que esperaba, pero funciona. Tengo que ver si puedo hacer que esto funcione. Gracias por la info. – sfitts

Cuestiones relacionadas