2009-06-01 17 views
50

Me gustaría que mi script de compilación funcione correctamente para entornos de lanzamiento y desarrollo.define la propiedad ant del entorno con el valor predeterminado

Por esto me gustaría definir una propiedad en la hormiga, lo llaman (por ejemplo) fileTargetName

fileTargetName conseguirá su valor de la variable de entorno RELEASE_VER si está disponible, si no está disponible se obtendrá el valor por defecto valor de dev

Ayuda con la hormiga <condition><value></condition> & <property> de conseguirlo es apreciado trabajar.

Respuesta

71

Un ejemplo de la Ant documentation de cómo conseguir una variable de entorno en una propiedad:

<property environment="env"/> 
<echo message="Number of Processors = ${env.NUMBER_OF_PROCESSORS}"/> 
<echo message="ANT_HOME is set to = ${env.ANT_HOME}"/> 

En su caso, se usaría ${env.RELEASE_VER}.

Luego de la parte condicional, la documentación here dice que hay tres posibles atributos:

 
Attribute Description            Required 
property The name of the property to set.      Yes 
value  The value to set the property to. Defaults to "true". No 
else  The value to set the property to if the condition  No 
      evaluates to false. By default the property will 
      remain unset. Since Ant 1.6.3 

poner juntos:

<property environment="env"/> 
<condition property="fileTargetName" value="${env.RELEASE_VER}" else="dev"> 
    <isset property="env.RELEASE_VER" /> 
</condition> 
+2

Ayer no habría podido responder a esta pregunta, pero SO me ha obligado a investigar. ¡Hurra por StackOverflow! –

+1

¡Gracias! Un comportamiento extraño de la hormiga: si no se establece el parámetro de entorno, haciendo un eco en $ {env.ANT_HOME} se imprimirá "$ {env.ANT_HOME}". La invocación predeterminada de ant no lo establece (al menos en esta máquina: RH WS 5, bash) –

0

estoy seguro de que hay maneras más fácil que esto, pero ¿qué tal:

<project name="example" default="show-props"> 

    <property environment="env" /> 

    <condition property="fileTargetName" value="${env.RELEASE_VER}"> 
     <isset property="env.RELEASE_VER" /> 
    </condition> 

    <condition property="fileTargetName" value="dev"> 
     <not> 
      <isset property="env.RELEASE_VER" /> 
     </not> 
    </condition> 

    <target name="show-props"> 
     <echo>property is ${fileTargetName}</echo> 
    </target> 

</project> 
+0

No sabía sobre el atributo más a la condición - @mmyers FTW – toolkit

+0

Creo que tener que buscar todo en el manual tiene sus ventajas . :) –

38

No es necesario utilizar un <condition> para esto. Propiedades en Ant son immutable, por lo que sólo puede utilizar este:

<property environment="env"/> 
<property name="env.RELEASE_VER" value="dev"/> 

Si se establece la variable de entorno RELEASE_VER, entonces la propiedad tendrá su valor desde el medio ambiente y la segunda <property> declaración no tendrá ningún efecto. De lo contrario, la propiedad se desactivará después de la primera instrucción, y la segunda declaración establecerá su valor en "dev".

+0

No es exactamente el mismo efecto, pero supongo que podrías agregar otro para darle el nombre que quieras, ¿verdad? –

+0

Claro, podría agregar una tercera línea como . –

+0

Gracias, eso es un buen giro en el tema. Debido a razones de legibilidad, me quedaré con la condición. –

Cuestiones relacionadas