Лучшее, что вы можете сделать в 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"
, задача заблокирует все файлы в вашем пути к классам и сохранит их заблокированными в течение всего вашего строить.
Надеюсь, это поможет!