Unsetting Property in Ant and Removing Property in Ant using a condition
ant, java
Solution
The Ant manual Property Task states:
Properties are immutable: whoever sets a property first freezes it for the rest of the build; they are most definitely not variables.
That being said, there are a couple of workarounds:
Local Task - A local property at a given scope "shadows" properties of the same name at higher scopes (especially useful within Macrodefs)
Ant-Contrib Variable Task - Ant-Contrib offers flexibility, but it also adds a dependency and can sometimes tempt you to write procedural Ant code that may be better expressed in an Ant script or a custom Ant task
In your example above, if the property `proguarded` does not change during the execution of your Ant project, then there is no need to unset the property. For example, you could conditionally execute targets as follows:
<target name="proguarded-target" if="proguarded">
...
</target>
<target name="not-proguarded-target" unless="proguarded">
...
</target>
Problem
How do you unset a property in ant? so that is is completely removed as a property? ``` <condition property="proguard.config" value="proguard.cfg"> <isset property="proguarded"/> </condition> <condition property="proguard.config" value=""> <not> <isset property="proguarded"/> </not> </condition> ``` This would seem to work. However proguard runs even if there is such a property as proguard.config in existence. So how do I remove proguard.config as a property altogether conditionally? I know that if proguard sees that there is a proguard.config property at all in the .properties file it is going to run.