2

私はインターネット全体を見てきましたが、どこにも答えが見つかりませんでした。ANT スクリプトでコーディングされた MQFTE ジョブがあり、ファイルに今日の日付がない場合にファイルを移動するプロセスに問題があります。私がやりたいのは、実行の途中で真の値を返すような条件付き停止です。そのため、ジョブはそれ以上のルーチンを通過せず、ファイルがスキップされると識別された場合に終了します。

ANTでそれは可能ですか?<target>それとも、スクリプトのすべてを通過する必要がありますか?

4

2 に答える 2

1

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

Ant-Contrib タスクが役立つかもしれません。条件に基づいてタスクを実行するには、「If-then-else」が可能な解決策です - 「Ant if」

于 2012-08-24T14:35:12.653 に答える