如何使Ant中的属性变为可变

时间:2012-01-09 14:13:38

标签: ant

我正在使用ant条件任务检查文件存在和目录存在,下面是我的代码

<project name="makeitmutable" basedir="." default="main">
  <target name="main">
     <condition property="folderexists?" value="Yeah" else="Nope">
       <and>
          <available file="folderexistance" type="dir"/>
          <available file="a.zip" type="file"/>
      </and>
     </condition>
     <echo>before deleting "folderexistance" folder  property folderexists?=${folderexists?}</echo>
     <delete dir="folderexistance"/>
     <!--after delete-->
      <condition property="folderexists?" value="Yeah" else="Nope">
       <and>
          <available file="folderexistance" type="dir"/>
          <available file="a.zip" type="file"/>
      </and>
     </condition>
     <!--how to make below line to print Nope ?-->
   <echo>After deleting "folderexistance" folder  property folderexists?=${folderexists?}</echo>
  </target>
</project>

我的属性folderexists的输出值?删除目录后仍保持不变,即..,两次

我知道一旦设置无法更改,ant属性是不可变的,而且这个解决方案的另一种选择是我们可以使用

<antcall>

任务并调用主要目标。

有没有办法让该属性在该目标中可变,就像在上面的场景中一样,我正在寻找解决这个问题的其他可能性,这类问题的编程实践更好。

1 个答案:

答案 0 :(得分:3)

正如你所说,属性是不可改变的。唯一的另一种选择是使用var task from ant-contrib.

来自文档的引用:一般来说,使用此任务是DISCOURAGED,如果可能,应使用标准的Ant属性。 话虽如此,在现实生活中我使用这个很多。

也说了很多; - )