使用ANT检查是否存在多个文件

时间:2013-03-29 06:45:30

标签: ant ant-contrib

我正在使用ANT检查两个罐子中的文件集的计数。 我无法检查相同模式的文件是否存在。

例如我有2个文件,如/host/user/dir1/ABC1.txt和/host/user/dir1/ABC2.txt。

现在我要检查模式文件“/ host / user / dir1 / ABC *”是否存在?

我可以使用可用标记检查单个文件/host/user/dir1/ABC1.txt,但无法检查文件中的特定模式。

提前感谢。

对于单个文件,以下工作正常:

<if>
    <available file="${client.classes.src.dir}/${class_to_be_search}.class"/>
    <then>
         <echo> File ${client.classes.src.dir}/${class_to_be_search}.class FOUND in src dir 

         </echo>
         <echo> Update property client.jar.packages.listOfInnerClass</echo>
    </then>
    <else>
         <echo> File ${client.classes.src.dir}/${class_to_be_search}.class NOT FOUND      in src dir.  
         </echo>
    </else>
</if>

但我想搜索多个文件: 类似于:$ {dir.structure} / $ {class_to_be_search} $ * .class

1 个答案:

答案 0 :(得分:3)

if task不是核心ANT的一部分。

以下示例显示了如何使用ANT condition task完成此操作。您可以在文件集中使用所需的任何模式。目标执行随后取决于如何设置“file.found”属性:

<project name="demo" default="run">

    <fileset id="classfiles" dir="build" includes="**/*.class"/>

    <condition property="file.found">
        <resourcecount refid="classfiles" when="greater" count="0"/>
    </condition>

    <target name="run" depends="found,notfound"/>

    <target name="found" if="file.found">
        <echo message="file found"/>
    </target>

    <target name="notfound" unless="file.found">
        <echo message="file not found"/>
    </target>

</project>