Вы всегда получаете одну и ту же метку времени, поскольку свойство, содержащее это значение, оценивается только один раз . Предложение добавить '' в начале задачи также не поможет, потому что Ant не будет обновлять значение свойства.
Решение, которое я придумал, состоит в том, чтобы определить вашу собственную задачу Ant:
public class StampedEcho extends Echo {
private String message;
private String pattern = "d-MMMM-yyyy";
private Locale locale = Locale.US;
public void setPattern(String pattern) { this.pattern = pattern; }
public void setLocale(String locale) { this.locale = new Locale(locale); }
@Override
public void setMessage(String message) { this.message = message; }
@Override
public void execute() throws BuildException {
String date = new SimpleDateFormat(this.pattern, this.locale).format(new Date());
super.setMessage(date + (this.message == null ? "" : " " + this.message));
super.execute();
}
}
Затем определите файл Antlib (например, message-antlib.xml
) для создания экземпляра и вызова класса:
<antlib>
<macrodef name="tstamp">
<attribute name="message" default=""/>
<attribute name="pattern" default="HH:mm:ss"/>
<attribute name="locale" default="en"/>
<sequential>
<!-- I suppose that the class is in Ant's classpath -->
<taskdef name="tsecho" classname="StampedEcho"/>
<tsecho message="@{message}" pattern="@{pattern}" locale="@{locale}"/>
</sequential>
</macrodef>
</antlib>
измените ваш build.xml
файл соответственно
<project xmlns:msg="antlib:message">
<typedef file="message-antlib.xml" uri="antlib:message"/>
<target name="testing">
<msg:tstamp/>
<msg:tstamp message="start"/>
<msg:tstamp message="end" pattern="HH.mm" locale="en_GB"/>
</target>
</project>
чтобы получить следующий вывод:
[tsecho] 21:46:20
[tsecho] 21:46:20 start
[tsecho] 21.46 end