define ant property from environment with default value define ant property from environment with default value java java

define ant property from environment with default value


An example from the Ant documentation of how to get an environment variable into a property:

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

In your case, you would use ${env.RELEASE_VER}.

Then for the conditional part, the documentation here says that there are three possible attributes:

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

Putting it together:

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


You don't need to use a <condition> for this. Properties in Ant are immutable, so you can just use this:

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

If the RELEASE_VER environment variable is set, then the property will get its value from the environment and the second <property> statement will have no effect. Otherwise, the property will be unset after the first statement, and the second statement will set its value to "dev".


I'm sure there are easier ways than this, but how about:

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