我希望我的构建脚本能够在发布和开发环境中正常运行。
为此,我想在ant中定义一个属性,称之为(例如)fileTargetName
fileTargetName
会从环境变量RELEASE_VER
中获取它的值,如果它可用,如果它不可用,它将获得默认值 dev
帮助ant <condition><value></condition>
&amp;感谢<property>
让它发挥作用。
答案 0 :(得分:76)
Ant documentation中有关如何将环境变量转换为属性的示例:
<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}
。
然后对于条件部分,文档here表示有三种可能的属性:
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
把它放在一起:
<property environment="env"/>
<condition property="fileTargetName" value="${env.RELEASE_VER}" else="dev">
<isset property="env.RELEASE_VER" />
</condition>
答案 1 :(得分:40)
您不需要使用<condition>
。 Ant中的属性是immutable,所以你可以使用它:
<property environment="env"/>
<property name="env.RELEASE_VER" value="dev"/>
如果设置了RELEASE_VER
环境变量,那么该属性将从环境中获取其值,而第二个<property>
语句将不起作用。否则,在第一个语句之后将取消设置该属性,第二个语句将其值设置为"dev"
。
答案 2 :(得分:1)
我确信有比这更简单的方法,但是如何:
<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>