如何在 NANT 0.91 中执行 IF/ELSE?

How to do an IF/ELSE in NANT 0.91?

我们使用的是 Nant 0.91,所以 不可用。您将如何在 Nant 0.91 中执行 IF/ELSE?我想在 NAnt 0.91 中做一些类似的事情(使用 NAnt 0.92 语法)。 [不允许修改当前安装的NAnt 0.91]:

<choose>
   <when test="${deploy.env=='PROD'}">
        <property name="deploy.root.dir" value="\${deploy.server}${deploy.mode}${app.dest.dir}\" />
    </when>
    <otherwise>
        <property name="deploy.root.dir" value="\${deploy.server}${deploy.mode}${deploy.env}${app.dest.dir}\" />
    </otherwise>
</choose>

我们在这里使用的最简单的解决方案是只使用两个 if 任务,一个对另一个进行负面测试:

<if test="${deploy.env == 'PROD'}">
    <property name="deploy.root.dir" value="\${deploy.server}${deploy.mode}${app.dest.dir}\" />
</if>
<if test="${deploy.env != 'PROD'}">
    <property name="deploy.root.dir" value="\${deploy.server}${deploy.mode}${deploy.env}${app.dest.dir}\" />
</if>

但是在您的情况下,您还可以利用 property task 内置的 if/unless 功能这一事实:

<property name="deploy.root.dir" if="${deploy.env == 'PROD'}" value="\${deploy.server}${deploy.mode}${app.dest.dir}\" />
<property name="deploy.root.dir" unless="${deploy.env == 'PROD'}" value="\${deploy.server}${deploy.mode}${deploy.env}${app.dest.dir}\" />

您可以设置默认 属性 值,然后在条件为真时覆盖:

<property name="deploy.root.dir" value="\${deploy.server}${deploy.mode}${deploy.env}${app.dest.dir}\" />
<if test="${deploy.env == 'PROD'}">
    <property name="deploy.root.dir" value="\${deploy.server}${deploy.mode}${app.dest.dir}\" />
</if>