Ant 蚂蚁:如何比较时间戳?
在长时间运行的Ant脚本中,我有一个大约每秒调用一次的目标。(这可能不是一件好事,但让我们暂时接受它。)Ant 蚂蚁:如何比较时间戳?,ant,ant-contrib,Ant,Ant Contrib,在长时间运行的Ant脚本中,我有一个大约每秒调用一次的目标。(这可能不是一件好事,但让我们暂时接受它。) 我只希望它在最后一次实际执行时至少在五分钟前执行 解决方案的一个想法是维护lastRunTimestamp属性,并将当前时间与该属性进行比较 问题:如何在Ant中比较时间戳 另一个同样受欢迎的解决方案是只在指定的时间间隔执行目标的方法,这样就不需要进行检查 我正在使用Ant 1.7.1和Ant contrib 非常感谢您的任何想法-谢谢 这个问题很有趣,而且比我原来想的要难回答一点 您可以使
我只希望它在最后一次实际执行时至少在五分钟前执行 解决方案的一个想法是维护
lastRunTimestamp
属性,并将当前时间与该属性进行比较
问题:如何在Ant中比较时间戳
另一个同样受欢迎的解决方案是只在指定的时间间隔执行目标的方法,这样就不需要进行检查
我正在使用Ant 1.7.1和Ant contrib
非常感谢您的任何想法-谢谢 这个问题很有趣,而且比我原来想的要难回答一点 您可以使用
任务设置五分钟前的时间戳:
<tstamp>
<format property="time_stamp"
offset="-5"
unit="minutes"
pattern="MM/dd/yyyy hh:mm:ss aa"/>
</tstamp>
一旦有了时间戳,就可以使用
任务的lastmodified条件来查看特定文件是否已经更新。如果没有文件,可以使用
任务创建一个文件
<condition property="has.been.modified">
<islastmodified dateTime="${time_stamp}" mode="after">
<file file="${touch.file}"/>
</islastmodified>
</condition>
唯一的问题是默认属性是不可变的。一旦设置好,就无法更改它们。幸运的是,您正在使用
antcontrib
,并且antcontrib
允许您通过变量任务来更改它。太酷了,应该可以了!但是,它需要一个临时文件。也许我可以使用
创建时间戳,而不是将其作为字符串进行字典比较?这将把问题简化为比较字符串。不知道怎么做。发现这个:结合你的答案,这是一个很好的解决方案。刚刚发现
是Ant 1.8的一个特性。在Ant 1.7中,必须寻求其他解决方案,例如将时间戳写入文件。我认为上面示例中的“format”属性实际上应该是“pattern”--sopattern=“MM/dd/yyyy hh:MM:ss aa”