Можно ли условно остановить скрипт Ant на основе времени последнего изменения файла?
Я искал по всему интернету, но нигде не мог найти ответ. У меня есть задание MQFTE, написанное в сценарии ANT, и у меня возникают трудности с процессом, который перемещает файлы, если файл не имеет сегодняшнюю дату. Я хотел бы сделать условную остановку, что-то вроде возврата истинного значения в середине выполнения, чтобы задание не проходило через дальнейшую процедуру и просто заканчивалось, если файл определен как пропускаемый.
Это возможно в ANT? Или это должно пройти через каждый <target>
в сценарии?
2 ответа
Муравей fail
Задача может быть использована для условной остановки скрипта Ant. Пример ниже инициализирует свойство TODAY
на текущую дату, а затем использует fileset
с вложенным <date>
элемент только для выбора файлов, измененных до сегодняшней даты. pathconvert
Задача затем устанавливает свойство files-not-empty
только если есть хотя бы один файл в fileset
изменено до сегодняшней даты. fail
Затем задание используется для остановки скрипта Ant, если нет файлов для копирования.
<target name="copy-if-not-modified-today">
<property name="copy-from.dir" value="${basedir}" />
<property name="copy-to.dir" value="${basedir}/build/copied_files" />
<mkdir dir="${copy-to.dir}" />
<tstamp>
<format property="TODAY" pattern="MM/dd/yyyy" />
</tstamp>
<fileset id="files" dir="${copy-from.dir}" includes="*">
<date datetime="${TODAY} 12:00 AM" when="before"/>
</fileset>
<pathconvert property="files-not-empty" setonempty="false" refid="files" />
<!--
Stop the Ant script if there are no files to copy that were modified prior
to today's date.
-->
<fail unless="files-not-empty" />
<copy todir="${copy-to.dir}" preservelastmodified="true">
<fileset refid="files" />
</copy>
</target>
Возможно Ant-Contrib Tasks могут вам помочь. Для выполнения задач, основанных на условиях, "If-then-else" является возможным решением - "Ant if"