Указанные свойства неизменны в муравьином, вам нужно сделать что-то немного забавное здесь, иначе вы просто закончите тем, что снова и снова регистрируете одну и ту же метку времени.
Использование antcall дает вам новую сессию, что означает, что вы можете повторно использовать свойство, хотя оно немного неуклюжие.
<macrodef name="timestamp.echo">
<attribute name="message"/>
<sequential>
<antcall target="_timestamp.echo">
<param name="message" value="@{message}" />
</antcall>
</sequential>
</macrodef>
<target name="_timestamp.echo">
<tstamp>
<format property="current.time" pattern="dd/MM/yyyy hh:mm:ss"/>
</tstamp>
<echo message="${current.time} ${message}"/>
</target>
Если вы используете Ant 1.8, то вы можете использовать локальный, который гораздо чище
<macrodef name="timestamp.echo">
<attribute name="message"/>
<sequential>
<local name="current.time" />
<tstamp>
<format property="current.time" pattern="dd/MM/yyyy hh:mm:ss"/>
</tstamp>
<echo message="${current.time} @{message}" />
</sequential>
</macrodef>
А вот как вы можете использовать его
<target name="testTsEcho" depends="init" description="blah">
<timestamp.echo message="test" />
<sleep seconds="10" />
<timestamp.echo message="test2" />
</target>
Это будет хранить временную метку в свойстве, поэтому все сообщения будут использоваться в одно и то же время. Хорошо в некоторых случаях, но бесполезно для, например, видя, какая часть сборки занимает слишком много времени.Поскольку ОП упоминает «временную метку для каждого сообщения», я на самом деле не думаю, что это правильный ответ на вопрос о намерении. –
Я не уверен в этом Расмусе. Если вы повторно вызываете установленный макрос временной метки и сразу после этого дампа время, оно должно сбрасывать его соответствующим образом. – corsiKa