Apache蚂蚁删除目录无论如何

时间:2010-07-09 02:00:49

标签: windows ant continuous-integration

无论如何,我如何让Apache Ant删除目录。我希望它被删除,即使Windows上有目录的锁或用法。

我在Windows机器上使用持续集成远程代理,无法删除构建目录,因此构建失败。这非常令人讨厌并且对统计数据造成破坏。

没有任何主动使用该目录,并且禁用了防病毒软件。

我只想删除目录,无论如何。如何在Windows上使用Apache Ant实现这一目标?

2 个答案:

答案 0 :(得分:1)

我认为您需要外部程序才能执行此操作。 检查一下: _http://www.codeguru.com/cpp/w-p/files/fileio/article.php/c1287

这里你有解锁工具的比较。用命令行界面检查: _http://ccollomb.free.fr/unlocker/

如果你知道什么进程拿着你的文件夹,你可以调用taskkill ...(你甚至可以杀死explorer.exe但是你可以再次启动它) 如果您的文件夹已共享,则可以使用 net delete 命令

答案 1 :(得分:0)

在Ant中,最好的方法是设置参数quiet="true"includeemptydirs="true",以防止在缺少目录或存在锁定时停止构建,并删除顶层目录,即使它为空。例如:

<delete quiet="true" includeEmptyDirs="true">
  <fileset dir="stubbornDir"/>
</delete>

您还可以确保尝试删除的资源不是只读的,因此在执行<delete>任务之前,请在脚本中包含以下内容:

    <!-- The following only works on UNIX -->
    <chmod perm="a+w">
        <fileset dir="${dist.dir}">
            <include name="**/*.jar"/>
            <exclude name="${app.context.path}"/>
        </fileset>  
    </chmod>

    <!-- Win NT alternative -->
    <echo message="      To permit file deletion, execute attrib.exe to change read permissions on:  ${dist.dir}"/>
    <exec dir="${dist.dir}" executable="attrib.exe" os="Windows NT,Windows 2000,Windows XP">
        <arg line="-R **/*.jar"/>
    </exec>

但是,为了回答您的问题,恐怕使用Ant不可能在存在锁的情况下删除文件或目录。

但是,还要知道,如果您在脚本的前面使用了<javac>任务,那么除非您设置了fork="true",否则该任务将锁定类路径中的所有文件,并在执行过程中将其锁定整个构建。

希望这会有所帮助!