Ant任务删除目录中的所有内容但只删除一个文件

时间:2014-05-23 22:21:18

标签: wordpress ant

我正在研究一个Ant脚本来帮助Wordpress部署(我知道......)。这里的想法是:

  • 删除整个vendor目录。
  • 删除整个public_html/wp目录。
  • public_html/content/plugins删除除一个PHP文件以外的所有内容:public_html/content/plugins/w3tc-wp-loader.php

这是我尝试过的(沿着很多变化):

<delete failonerror="false" quiet="false" includeEmptyDirs="true">
    <fileset dir="vendor" />
    <fileset dir="public_html/wp" />
    <fileset dir="public_html/content/plugins">
        <exclude name="w3tc-wp-loader.php" />
    </fileset>
</delete>

这种方式有效:

  • 它会删除vendor目录的内容,但子目录中存在的几个.gitignore文件除外,因此这些文件及其父目录仍然存在(即vendor/composer/installers/.gitignore)。
  • public_html/wp已按预期删除。
  • public_html/content/plugins包含一堆子目录,每个子目录都是空的(除了一个有.gitignore文件)。 Ant脚本中记录的排除文件将按预期保留。

任何想法为什么a)空的dirs没有被删除,b).gitignore文件似乎也保持不变(以及他们的父目录)?我做错了什么?

2 个答案:

答案 0 :(得分:4)

这样:

<delete failonerror="false" quiet="false" includeemptydirs="true">
    <fileset dir="${root}" defaultexcludes="false">
       <include name="vendor/**" />
       <include name="public_html/wp/**" />
       <include name="public_html/content/plugins/**" />
       <exclude name="public_html/content/plugins/w3tc-wp-loader.php" />
    </fileset>
</delete>

其中${root}vendorpublic_html的父目录。

defaultexcludes="false"会确保您的.gitignore也会被删除。

答案 1 :(得分:3)

默认排除您的.gitignore文件http://ant.apache.org/manual/dirtasks.html#defaultexcludes。要删除它们,请将defaultexcludes="false"添加到fileset