55

我希望我的构建脚本能够在发布和开发环境中正常运行。

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

fileTargetName如果可用,将从环境变量中获取它的值RELEASE_VER,如果不可用,它将获取dev的默认值

感谢您帮助 ant<condition><value></condition><property>使其正常工作。

4

3 回答 3

82

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

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

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

属性 描述 必填
property 要设置的属性的名称。是的
value 要将属性设置为的值。默认为“真”。不
else 将属性设置为的值 if 条件 否
           评估为假。默认情况下,该属性将
           保持未设置。自蚂蚁 1.6.3

把它放在一起:

<property environment="env"/>
<condition property="fileTargetName" value="${env.RELEASE_VER}" else="dev">
    <isset property="env.RELEASE_VER" />
</condition>
于 2009-06-01T21:24:46.293 回答
44

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

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

如果RELEASE_VER设置了环境变量,则属性将从环境中获取其值,第二<property>条语句将不起作用。否则,该属性将在第一条语句后取消设置,第二条语句将其值设置为"dev"

于 2009-06-02T17:58:48.677 回答
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>
于 2009-06-01T21:37:38.310 回答