4

長時間実行されているAntスクリプトには、およそ1秒に1回呼び出されるターゲットがあります。(これはおそらく良いことではありませんが、とりあえず受け入れましょう。)
最後の実際の実行が少なくとも5分前である場合にのみ実行したいと思います。

解決策の1つのアイデアは、プロパティを維持しlastRunTimestamp、現在の時刻をそれと比較することです。

問題: Antのタイムスタンプを比較するにはどうすればよいですか?

また、歓迎されるもう1つの解決策は、指定された時間間隔でのみターゲットを実行する手段です。これにより、チェックは不要になります。

私はAnt1.7.1とant-contribを使用しています。

どんなアイデアでも大歓迎です-ありがとう!

4

1 に答える 1

3

興味深い質問であり、私が当初考えていたよりも答えるのが少し難しい質問です。

このタスクを使用して、<tstamp>5分前のタイムスタンプを設定できます。

<tstamp>
  <format property="time_stamp"
      offset="-5"
      unit="minutes"
      pattern="MM/dd/yyyy hh:mm:ss aa"/>
</tstamp>

そのタイムスタンプを取得したら、タスクの最終変更条件を使用し<condition>て、特定のファイルがそれ以降に更新されているかどうかを確認できます。ファイルがない場合は、<touch>タスクを使用してファイルを作成できます。

<condition property="has.been.modified">
     <islastmodified dateTime="${time_stamp}" mode="after">
        <file file="${touch.file}"/>
     </islastmodified>
</condition>

唯一の問題は、デフォルトのプロパティが不変であるということです。一度設定すると、変更することはできません。幸いなことに、あなたは使用ant-contribant-contribていて、可変タスクを介してそれを変更することができます。

于 2012-05-08T13:41:03.183 に答える