2

我一直在寻找整个互联网,但在任何地方都找不到答案。我有一个用 ANT 脚本编码的 MQFTE 作业,如果文件没有今天的日期,我在移动文件的过程中遇到了困难。我想做的是有条件的停止,比如在执行过程中返回真值,这样作业就不会经过进一步的例程,如果文件被识别为要跳过,就结束。

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

4

2 回答 2

1

Antfail任务可用于有条件地停止 Ant 脚本。下面的示例将属性初始化为TODAY当前日期,然后使用fileset带有嵌套<date>元素的 a 来仅选择在今天日期之前修改的文件。然后,仅当在今天日期之前修改过的文件中至少有一个文件时,该pathconvert任务才设置该属性。如果没有要复制的文件,则使用该任务来停止 Ant 脚本。files-not-emptyfilesetfail

<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>
于 2012-08-24T15:39:10.033 回答
0

也许Ant-Contrib Tasks可以帮助你。要根据条件执行任务,“If-then-else”是一种可能的解决方案—— “Ant if”

于 2012-08-24T14:35:12.653 回答