Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ANT if-else任务方法_Java_Ant_Build - Fatal编程技术网

Java ANT if-else任务方法

Java ANT if-else任务方法,java,ant,build,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=

我有一个关于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。能给我同样的语法吗。我将调用cmd文件,该文件将调用build.xml文件。此外,在本例2中,我必须在执行任何目标之前设置属性。

您可以使用一对嵌套的任务对变量值进行正匹配和负匹配,并相应地设置属性。(如果条件不匹配,则不设置属性。)

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
或者更简单地说,使用
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>

_值:${the_值}
var1:${var1}

这不是您想要的吗?嗨,克里斯坦,谢谢您的回复。Conditional也很好,但我在使用Conditional任务创建上面提到的代码方面还比较落后。我无法使用条件任务设置属性。我可以为我的上述要求的代码样本。谢谢你的答复sudocode。