Apache Ant:选择带文件集的文件?

时间:2011-01-09 17:43:18

标签: ant build

在ANT中使用fileset选择具有特定文件名或文件类型的文件非常容易,但是我还没有想出如何编写一个文件集来删除文件名以点开头的所有文件,例如.builtpath.hgignore,但不包括.htaccess;

这是我当前的文件:

<delete includeemptydirs="true">

    <fileset dir="${temp.dir}/fromRepo">            
        <exclude name=".htaccess"/>
        <include name="**/*" /> <!-- How to select files starting with .?!-->
    </fileset>

</delete>

1 个答案:

答案 0 :(得分:2)

建议你试试:

<delete includeemptydirs="true">
    <fileset dir="${temp.dir}/fromRepo">            
        <exclude name="**/.htaccess"/>
    </fileset>
</delete>

如果您没有指定任何通配符 - 如".htaccess"那样,那么该规则将只匹配确切的文件名,即顶级目录中的'.htaccess'。文件集。将目录通配符**添加到.htaccess将告诉Ant从删除中排除在文件集的目录层次结构下找到的所有名为“.htaccess”的文件。

如果您未指定任何包含规则,则会隐式包含所有文件 - 因此无需指定“全局”include

要注意的一件事 - 设置includeemptydirs true会在使用带有删除任务的文件集时删除所有空目录。如果目录不包含任何文件,则该目录仅被视为空。换句话说:包含名为'.htaccess'的文件的目录不会被删除,但是那些带有'.htaccess'文件的目录也不会被删除 - 希望这就是你需要的。