Можно ли условно остановить скрипт 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"

Другие вопросы по тегам