Ant
我在互联网上到处找,但在任何地方都找不到答案。我有一个用ANT脚本编码的MQFTE作业,如果文件没有今天的日期,我很难处理移动文件的过程。我想做的是一个有条件的停止,类似于执行过程中返回true值,这样作业就不会经过下一个例程,如果文件被识别为要跳过,就结束。
这在ANT中可能吗?还是必须遍历脚本中的每个<target>
?
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"