ANT删除空目录或使用index.html文件

时间:2012-03-05 09:35:52

标签: php eclipse ant

我正在用Ant建立一个免费和专业的包。
在专业版中,没有一些文件,因为我可以使用自定义PhpDoc标签跳过它们。

可悲的是,使用这个系统我有一些只有index.html的空目录,我希望删除它们,所以我可以分发一个“干净”的包。

我需要删除的目录遵循以下路径:

views
  `- {directoryName1}
      `- tmpl
         `- index.html
  `- {directoryName2}
   .... and son on ....

每次只更改directoryName,除非一切都保持不变 我尝试过这个ant任务,但它不起作用:

<delete includeemptydirs="true">
    <fileset dir="${buildDir}/free">
       <exclude name="**/*" />
       <include name="**/tmpl/index.html"/>
    </fileset>
</delete>

任何帮助?

1 个答案:

答案 0 :(得分:2)

您需要resourcecount和条件检查的组合。我使用ant-contrib,但你必须包含额外的罐子。

<project name="blah" basedir="." default="conditionally.clean">
    <taskdef resource="net/sf/antcontrib/antlib.xml"/>
    <macrodef name="m.clean">
        <attribute name="dir.todelete"/>
        <sequential>
            <local name="count.files"/>
            <resourcecount property="count.files">
                <fileset dir="@{dir.todelete}">
                    <exclude name="index.html"/>
                </fileset>
            </resourcecount>

            <if>
                <equals arg1="${count.files}" arg2="0"/>
                <then>
                    <echo message="will delete dir @{dir.todelete}"  />
                </then>
                <else>
                       <echo message="will not delete dir @{dir.todelete}"  />
                </else>
            </if>

        </sequential>

    </macrodef>

    <target name="conditionally.clean">
        <m.clean dir.todelete="etc/demo2"/>
        <m.clean dir.todelete="etc/demo1"/>
    </target>

</project>

您可以构建一个“foreach”(需要ant-contrib)来获取所有目录并调用上面的宏...

(我想custom taskembedded script可能比build.xml更清晰......)