我正在编写一个大型 Ant 脚本(> 1000 行),这是我从其他人那里继承的(不再可用)。我在 Ant 不删除目录时遇到问题。在脚本中的某个地方它可以工作,而在另一个地方却不行:Ant 不会给出错误消息,但它也会将目录留在它们所在的位置。
我在它周围放了一些时髦,以检查目录是否存在:
<groovy>
println("Directories in @{outFolder} are:")
new File("@{outFolder}").eachDir() { dir -> println dir.getName() }
</groovy>
<delete verbose="true" includeEmptyDirs="true" >
<dirset dir="@{outFolder}" includes="**/*" />
</delete>
<echo>End of delete</echo>
<groovy>
println("Directories in @{outFolder} are:")
new File("@{outFolder}").eachDir() { dir -> println dir.getName() }
</groovy>
因此,这些行被调用并且它们工作。接下来,调用其他一些应用程序,它会创建新目录。再次调用完全相同的行(复制和粘贴,是的,它们是相等的),但现在目录没有被删除。另外:没有错误,Ant 继续运行。我在 Windows Server 2008 R2 上使用 Ant 1.8.1。我尝试添加睡眠,以防止锁定问题。创建目录的应用程序是 Java 应用程序 (Tibco appManage)。这些目录包含 XML 文件,没有 jar 文件。我检查了 ANT_HOME 和 CLASSPATH:那里没有问题。我想念什么?
对于聪明的驴友:当然,第二次删除不应该删除应用程序创建的所有内容,但为了确定问题,我使脚本行尽可能简单。
更多信息:由于我无法使删除工作,我尝试使用 Ant move 作为解决方法。这就是我所看到的:移动在目的地创建了空目录,不会从源中删除任何文件或目录,也不会报告错误。这些源目录/文件(我之前试图删除)似乎有问题。
另一种尝试:下载最新版本的 Ant 和 Groovy。结果相同。