私はインターネット全体を見てきましたが、どこにも答えが見つかりませんでした。ANT スクリプトでコーディングされた MQFTE ジョブがあり、ファイルに今日の日付がない場合にファイルを移動するプロセスに問題があります。私がやりたいのは、実行の途中で真の値を返すような条件付き停止です。そのため、ジョブはそれ以上のルーチンを通過せず、ファイルがスキップされると識別された場合に終了します。
ANTでそれは可能ですか?<target>
それとも、スクリプトのすべてを通過する必要がありますか?
私はインターネット全体を見てきましたが、どこにも答えが見つかりませんでした。ANT スクリプトでコーディングされた MQFTE ジョブがあり、ファイルに今日の日付がない場合にファイルを移動するプロセスに問題があります。私がやりたいのは、実行の途中で真の値を返すような条件付き停止です。そのため、ジョブはそれ以上のルーチンを通過せず、ファイルがスキップされると識別された場合に終了します。
ANTでそれは可能ですか?<target>
それとも、スクリプトのすべてを通過する必要がありますか?
Antfail
タスクは、Antスクリプトを条件付きで停止するために使用できます。次の例では、プロパティTODAY
を現在の日付に初期化fileset
し、ネストされた<date>
要素とともにaを使用して、今日の日付より前に変更されたファイルのみを選択します。次に、pathconvert
タスクは、今日の日付より前に変更されfiles-not-empty
たファイルに少なくとも1つのファイルがある場合にのみ、プロパティを設定します。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 タスクが役立つかもしれません。条件に基づいてタスクを実行するには、「If-then-else」が可能な解決策です - 「Ant if」