Poniższy fragment pliku kompilacji Ant jest próbą wyprostowania czasu przed i po uruchomieniu każdego skryptu sql. Nie mogę zmienić struktury celów Ant (tabele tworzenia muszą wywoływać skrypt run-sql, tak jak to robi). Problem polega na tym, że właściwości (czas i czas2) są niezmienne (http://ant.apache.org/manual/Tasks/property.html), a zatem tylko czas pierwszej operacji, a nie drugi. Czy nie ma sposobu, aby zrobić to, co próbuję zrobić w Ant?Wypisz kilka znaczników czasu w ant
<target name="create-tables">
<antcall target="run-sql-script">
<param name="db.script" value="teams.sql"/>
</antcall>
<!-- Create the base UDM schema. -->
<antcall target="run-sql-script">
<param name="db.script" value="players.sql"/>
</antcall>
</target>
<target name="run-sql-script">
<tstamp>
<format property="time" pattern="MM/dd/yyyy hh:mm:ss aa"
offset="-5" unit="hour"/>
</tstamp>
<echo>before: ${time}</echo>
<sql
classpath="${classpath}"
driver="${db.driver}"
url="${db.url}"
userid="${db.userid}"
password="${db.password}"
src="${script.dir}/${db.script}"
delimiter="${script.delimiter}"
onerror="abort">
</sql>
<tstamp>
<format property="time2" pattern="MM/dd/yyyy hh:mm:ss aa"
offset="-5" unit="hour"/>
</tstamp>
<echo>after: ${time2}</echo>
</target>
@Rich - co pan zmienić? jaka była różnica pomiędzy oryginałem Aarona a twoją zmianą? – andersonbd1
@ andersonbd1, w pierwszym przypadku macrodef ustawi właściwość ze znacznikiem czasu, po ustawieniu znacznika czasu będzie używana wszędzie w kompilacji z oryginalną wartością. W drugiej wersji zmienna znacznika czasu jest dopasowana do wywołania wewnętrznego, więc będzie miała nową wartość za każdym razem –