我一直在寻找整个互联网,但在任何地方都找不到答案。我有一个用 ANT 脚本编码的 MQFTE 作业,如果文件没有今天的日期,我在移动文件的过程中遇到了困难。我想做的是有条件的停止,比如在执行过程中返回真值,这样作业就不会经过进一步的例程,如果文件被识别为要跳过,就结束。
这在ANT中可能吗?还是必须遍历<target>
脚本中的每一个?
我一直在寻找整个互联网,但在任何地方都找不到答案。我有一个用 ANT 脚本编码的 MQFTE 作业,如果文件没有今天的日期,我在移动文件的过程中遇到了困难。我想做的是有条件的停止,比如在执行过程中返回真值,这样作业就不会经过进一步的例程,如果文件被识别为要跳过,就结束。
这在ANT中可能吗?还是必须遍历<target>
脚本中的每一个?
Antfail
任务可用于有条件地停止 Ant 脚本。下面的示例将属性初始化为TODAY
当前日期,然后使用fileset
带有嵌套<date>
元素的 a 来仅选择在今天日期之前修改的文件。然后,仅当在今天日期之前修改过的文件中至少有一个文件时,该pathconvert
任务才设置该属性。如果没有要复制的文件,则使用该任务来停止 Ant 脚本。files-not-empty
fileset
fail
<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”