我正在使用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>
任务并调用主要目标。
有没有办法让该属性在该目标中可变,就像在上面的场景中一样,我正在寻找解决这个问题的其他可能性,这类问题的编程实践更好。
答案 0 :(得分:3)
正如你所说,属性是不可改变的。唯一的另一种选择是使用var
task from ant-contrib.
来自文档的引用:一般来说,使用此任务是DISCOURAGED,如果可能,应使用标准的Ant属性。 话虽如此,在现实生活中我使用这个很多。
也说了很多; - )