ANT if else 任务方法
ANT if else tasks approach
我有一个关于 ANT if else 任务的查询。浏览了很多东西之后,我了解到我们在 ant 中没有直接的 if else 任务。
我的要求:
<if>
<equals arg1="value" arg2="value" />
<then>
<property name="var1" value="class1"/>
</then>
<else>
<property name="var1" value="class2"/>
</else>
</if>
以下是我的问题:
1) 如果我们不能用 ANT 做到这一点,谁能建议我在 ANT >1.6 版本中实现它的替代方法
2) 如果我在 ANT_HOME/lib 中使用 antcontrib.jar 作为替代,我必须在 build.xml 的类路径中保留相同的 jar。我可以有相同的语法吗?我将调用我的 build.xml 文件的 cmd 文件。此外,在这种情况下,我必须在执行任何目标之前设置 属性 2.
您可以使用一对 condition tasks with nested conditions 对您的变量值进行正负匹配,相应地设置 属性。 (如果条件不匹配,则不设置属性。)
build.xml
<project>
<condition property="var1" value="class1">
<equals arg1="value" arg2="${the_value}"/>
</condition>
<condition property="var1" value="class2">
<not>
<equals arg1="value" arg2="${the_value}"/>
</not>
</condition>
<echo>the_value: ${the_value}</echo>
<echo>var1: ${var1}</echo>
</project>
输出:条件正匹配
$ ant
Buildfile: C:\Users\sudocode\tmp\ant\build.xml
[echo] the_value: ${the_value}
[echo] var1: class2
BUILD SUCCESSFUL
Total time: 0 seconds
输出:条件否定匹配
$ ant -Dthe_value=value
Buildfile: C:\Users\sudocode\tmp\ant\build.xml
[echo] the_value: value
[echo] var1: class1
BUILD SUCCESSFUL
Total time: 0 seconds
或者更简单地说,为同一结果定义一个具有 value
和 else
属性的条件:
<project>
<condition property="var1" value="class1" else="class2">
<equals arg1="value" arg2="${the_value}"/>
</condition>
<echo>the_value: ${the_value}</echo>
<echo>var1: ${var1}</echo>
</project>
我有一个关于 ANT if else 任务的查询。浏览了很多东西之后,我了解到我们在 ant 中没有直接的 if else 任务。
我的要求:
<if>
<equals arg1="value" arg2="value" />
<then>
<property name="var1" value="class1"/>
</then>
<else>
<property name="var1" value="class2"/>
</else>
</if>
以下是我的问题:
1) 如果我们不能用 ANT 做到这一点,谁能建议我在 ANT >1.6 版本中实现它的替代方法
2) 如果我在 ANT_HOME/lib 中使用 antcontrib.jar 作为替代,我必须在 build.xml 的类路径中保留相同的 jar。我可以有相同的语法吗?我将调用我的 build.xml 文件的 cmd 文件。此外,在这种情况下,我必须在执行任何目标之前设置 属性 2.
您可以使用一对 condition tasks with nested conditions 对您的变量值进行正负匹配,相应地设置 属性。 (如果条件不匹配,则不设置属性。)
build.xml
<project>
<condition property="var1" value="class1">
<equals arg1="value" arg2="${the_value}"/>
</condition>
<condition property="var1" value="class2">
<not>
<equals arg1="value" arg2="${the_value}"/>
</not>
</condition>
<echo>the_value: ${the_value}</echo>
<echo>var1: ${var1}</echo>
</project>
输出:条件正匹配
$ ant
Buildfile: C:\Users\sudocode\tmp\ant\build.xml
[echo] the_value: ${the_value}
[echo] var1: class2
BUILD SUCCESSFUL
Total time: 0 seconds
输出:条件否定匹配
$ ant -Dthe_value=value
Buildfile: C:\Users\sudocode\tmp\ant\build.xml
[echo] the_value: value
[echo] var1: class1
BUILD SUCCESSFUL
Total time: 0 seconds
或者更简单地说,为同一结果定义一个具有 value
和 else
属性的条件:
<project>
<condition property="var1" value="class1" else="class2">
<equals arg1="value" arg2="${the_value}"/>
</condition>
<echo>the_value: ${the_value}</echo>
<echo>var1: ${var1}</echo>
</project>