ANT if else任务方法

时间:2015-05-20 09:42:00

标签: java ant build

我有一个关于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中的classpath中保留相同的jar。我可以有相同的语法。我将cmd文件将调用我的build.xml文件。而且,在这种情况下,我必须在执行任何目标之前设置属性2。

1 个答案:

答案 0 :(得分:0)

您可以使用嵌套condition的一对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

或者更简单地说,为同一结果定义一个带有valueelse属性的条件:

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