2012-05-17 15 views
5

¿Cómo desarma una propiedad en hormiga? por lo que se elimina por completo como una propiedad?Inutilización de propiedades en Ant y eliminación de propiedades en Ant utilizando una condición

<condition property="proguard.config" value="proguard.cfg"> 
     <isset property="proguarded"/> 
</condition> 


<condition property="proguard.config" value=""> 
     <not> 
     <isset property="proguarded"/> 
     </not> 
</condition> 

Esto parece funcionar. Sin embargo Proguard se ejecuta incluso si existe una propiedad como proguard.config en existencia. Entonces, ¿cómo elimino proguard.config como una propiedad totalmente condicional? Sé que si proguard ve que hay una propiedad proguard.config en absoluto en el archivo .properties, se ejecutará.

Respuesta

8

Los Ant manual Property Task estados:

propiedades son inmutables: el que establece una propiedad primero se congela durante el resto de la construcción; definitivamente no son variables.

Dicho esto, hay un par de soluciones:

  1. Local Task - Una propiedad local en un "sombras" Dado el ámbito propiedades del mismo nombre en alcances más altos (especialmente útil dentro de Macrodefs)

  2. Ant-Contrib Variable Task - Ant-Contrib ofrece flexibilidad, sino que también añade una dependencia y, a veces puede tentar a escribir código Ant procesal que puede ser mejor expresado en un script Ant o una tarea personalizada hormiga


En el ejemplo anterior, si la propiedad proguarded no cambia durante la ejecución de su proyecto Hormiga, entonces no hay necesidad de desarmar la propiedad. Por ejemplo, puede ejecutar objetivos de forma condicional de la siguiente manera:

<target name="proguarded-target" if="proguarded"> 
    ... 
</target> 

<target name="not-proguarded-target" unless="proguarded"> 
    ... 
</target> 
Cuestiones relacionadas