Перед передачей файлов вы можете использовать задачу Touch , чтобы создать новые пустые файлы, соответствующие тем, которые вы будете передавать (повторно использовать тот же набор файлов) во временном каталоге.После завершения передачи вы можете использовать задачу Move , чтобы скопировать пустые файлы в каталог src.Вы можете использовать overwrite = "false" в задаче Move, чтобы гарантировать, что файлы, оставшиеся в каталоге src, не будут заменены (например, если вы хотите, чтобы пустые файлы были только для успешных передач).
ЗдесьЭто пример.
<project default="test">
<target name="test">
<touch>
<fileset dir="src">
<include name="test*"/>
</fileset>
<mapper type="regexp" from="(.*)" to="tmp/\1"/>
</touch>
<move todir="dest">
<fileset dir="src">
<include name="test*"/>
<!-- simulate file not transferred -->
<exclude name="test.doc"/>
</fileset>
<globmapper from="test.*" to="result_*.txt"/>
</move>
<move todir="src" overwrite="false">
<fileset dir="tmp"/>
</move>
</target>
</project>
Первый ход заменяет ваш перевод.Один файл (test.doc) не перемещен из каталога src (имитировать неудачную передачу).Вы можете проверить создание файлов с некоторым содержимым в каталоге src.После того как цель завершена, test.doc все еще должен иметь свое первоначальное содержимое.Остальные файлы должны быть пустыми.
В ответ на ваш вопрос о преобразователе регулярных выражений:
<mapper type="regexp" from="(.*)" to="tmp/\1"/>
Это захватывает все имя входящего файла в группу ...
from="(.*)"
и добавляет "tmp /" к этой захваченной группе ...
to="tmp/\1"
(В регулярном выражении \1
относится к первой захваченной группе в выражении. Группы определяются с помощью скобок.)
Таким образом, из src/somefile.txt
мы получим somefile.txt
в качестве входного файла для преобразователя и переведем его в tmp/somefile.txt
.