Đoạn mã buildfile Ant bên dưới là một nỗ lực để đơn giản xuất ra thời gian trước và sau mỗi tập lệnh sql được chạy. Tôi không thể thay đổi cấu trúc của các mục tiêu Ant (các bảng tạo phải gọi run-sql-script giống như nó). Vấn đề là các thuộc tính (thời gian và thời gian 2) là không thay đổi (http://ant.apache.org/manual/Tasks/property.html) và do đó chỉ có thời gian hoạt động đầu tiên và không phải là lần thứ hai. Không có cách nào để làm những gì tôi đang cố gắng làm trong Ant?Xuất một số dấu thời gian trong 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 - bạn đã thay đổi những gì? sự khác biệt giữa bản gốc của Aaron và sự thay đổi của bạn là gì? – andersonbd1
@ andersonbd1, trong trường hợp đầu tiên macrodef sẽ đặt thuộc tính có dấu thời gian, khi dấu thời gian được đặt, nó được sử dụng ở mọi nơi trong bản dựng với giá trị ban đầu. Trong phiên bản thứ hai, biến timestamp là phạm vi cho cuộc gọi bên trong, do đó sẽ có một giá trị mới mỗi lần –