このスレッドのフォローアップで、マクロ定義が呼び出されるたびにインスタンス化し続けるため、キャッシングの問題がないため、マクロ定義がより適切な方法であると読みました。私は彼らの例を単純化しました。ファイル全体を含めたので、以下のコードを clock.xml として保存し、ant から直接実行できます。
<project name="marktime" basedir=".">
<description>
logstamp is a simple macrodef for ANT to echo a time stamp out to an open log.
It is not written to pass back the current time, just simple echo to stdout.
You are welcome to add which file to output the results to, add blurbs to messages.
</description>
<macrodef name="logstamp">
<sequential>
<local name="logtime"/>
<tstamp>
<format property="logtime" pattern="yyyy.MM.dd : HH:mm:ss z"/>
</tstamp>
<echo message=" ### Current time now: ${logtime}"/>
</sequential>
</macrodef>
<target
name="init"
description="boilerplate for all targets">
<!-- Just run the Macrodef -->
<logstamp/>
<sleep seconds="5"> </sleep>
<logstamp/>
<sleep seconds="5"> </sleep>
<logstamp/>
<sleep seconds="5"> </sleep>
<logstamp/>
<sleep seconds="5"> </sleep>
<logstamp/>
</target>
</project>
結果は次のとおりです。
C:\desktop\>ant -f clock.xml init
Buildfile: C:\desktop\clock.xml
init:
[echo] ### Current time now: 2014.02.14 : 16:41:06 PST
[echo] ### Current time now: 2014.02.14 : 16:41:11 PST
[echo] ### Current time now: 2014.02.14 : 16:41:16 PST
[echo] ### Current time now: 2014.02.14 : 16:41:21 PST
[echo] ### Current time now: 2014.02.14 : 16:41:26 PST
BUILD SUCCESSFUL
Total time: 20 seconds