我可以根据文件上次修改的时间有条件地停止Ant脚本吗



我在互联网上到处找,但在任何地方都找不到答案。我有一个用ANT脚本编码的MQFTE作业,如果文件没有今天的日期,我很难处理移动文件的过程。我想做的是一个有条件的停止,类似于执行过程中返回true值,这样作业就不会经过下一个例程,如果文件被识别为要跳过,就结束。

这在ANT中可能吗?还是必须遍历脚本中的每个<target>

Ant fail任务可用于有条件地停止Ant脚本。下面的示例将属性TODAY初始化为当前日期,然后使用带有嵌套<date>元素的fileset仅选择在今天日期之前修改的文件。pathconvert任务然后仅在fileset中至少有一个文件在今天的日期之前修改的情况下设置属性files-not-empty。如果没有要复制的文件,则使用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任务可以帮助您。要根据条件执行任务,"If then else"是一个可能的解决方案-"Ant If"

相关内容

  • 没有找到相关文章

最新更新