在一个长时间运行的 Ant 脚本中,我有一个大约每秒调用一次的目标。(这可能不是一件好事,但让我们暂时接受它。)
我只希望它最后一次实际执行至少在五分钟前执行。
解决方案的一个想法是维护一个lastRunTimestamp
属性,并将当前时间与其进行比较。
问题:如何比较 Ant 中的时间戳?
另一个受欢迎的解决方案是仅在指定的时间间隔执行目标的方法,这样就不需要检查。
我正在使用 Ant 1.7.1 和 ant-contrib。
任何想法都非常感谢 - 谢谢!
在一个长时间运行的 Ant 脚本中,我有一个大约每秒调用一次的目标。(这可能不是一件好事,但让我们暂时接受它。)
我只希望它最后一次实际执行至少在五分钟前执行。
解决方案的一个想法是维护一个lastRunTimestamp
属性,并将当前时间与其进行比较。
问题:如何比较 Ant 中的时间戳?
另一个受欢迎的解决方案是仅在指定的时间间隔执行目标的方法,这样就不需要检查。
我正在使用 Ant 1.7.1 和 ant-contrib。
任何想法都非常感谢 - 谢谢!
有趣的问题,而且比我最初想象的更难回答。
您可以使用该<tstamp>
任务设置五分钟前的时间戳:
<tstamp>
<format property="time_stamp"
offset="-5"
unit="minutes"
pattern="MM/dd/yyyy hh:mm:ss aa"/>
</tstamp>
获得该时间戳后,您可以使用任务的lastmodified条件<condition>
来查看特定文件是否已更新。如果您没有文件,您可以使用<touch>
任务创建一个。
<condition property="has.been.modified">
<islastmodified dateTime="${time_stamp}" mode="after">
<file file="${touch.file}"/>
</islastmodified>
</condition>
唯一的问题是默认属性是不可变的。一旦设置,您将无法更改它们。幸运的是,您正在使用ant-contrib
并ant-contrib
允许您通过变量任务来更改它。