使用默认值从环境中定义ant属性

我希望我的构build脚本在发布和开发环境中正常工作。

为此,我想在ant中定义一个属性,将其称为(例如) fileTargetName

fileTargetName将从环境variablesRELEASE_VER获取它的值(如果它是可用的),如果它不可用,它将获得dev的默认值

帮助与ant<condition><value></condition><property>得到它的工作表示赞赏。

Ant文档中有关如何将环境variables放入属性的示例:

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

在你的情况下,你会使用${env.RELEASE_VER}

然后对于条件部分, 这里的文档说有三个可能的属性:

属性描述必需 
属性要设置的属性的名称。 是 
值将属性设置为的值。 默认为“true”。 没有 
其他如果条件No,则设置属性的值
           评估为假。 默认情况下,属性会
           保持未定。 从Ant 1.6.3开始

把它放在一起:

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

你不需要为此使用<condition> 。 Ant中的属性是不可变的 ,所以你可以使用这个:

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

如果设置了RELEASE_VER环境variables,那么属性将从环境中获取它的值,而第二个<property>语句将不起作用。 否则,该属性将在第一个语句之后取消设置,第二个语句将其值设置为"dev"

我相信有比这更简单的方法,但如何:

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