變更資源的修改時間,並可能同時建立它。除了處理單一檔案外,此任務還能處理資源和資源集合(也包含目錄)。在 Apache Ant 1.7 之前,僅支援 FileSet 或Filelist(自 Ant 1.6 起)。
Ant 使用java.io.File
的 API 來設定最後修改時間,這有一些限制。例如,時間戳記的精確度取決於作業系統,有時作業系統允許的精確度低於毫秒。如果您需要更多控制,則必須回歸到<exec>
任務和原生命令。
自 Ant 1.8.2 起,如果無法變更檔案修改時間,則會記錄警告訊息。例如,如果您嘗試變更在許多 Unix 系統上您不擁有的檔案的修改時間,就會發生這種情況。
屬性 | 說明 | 必要 |
---|---|---|
檔案 | 檔案名稱。 | 除非已指定巢狀資源集合元素 |
毫秒 | 指定檔案自 1970 年 1 月 1 日午夜以來的修改時間(毫秒)。 | 否;日期時間 優先,但如果兩者都省略,則假設為目前時間 |
日期時間 | 指定檔案的新修改時間。自 Ant 1.8 起,特殊值現在表示目前時間。 |
|
模式 | 使用目前區域設定的 SimpleDateFormat 相容模式字串。自 Ant 1.6.3 起 | 否;預設為MM/dd/YYYY hh:mm a或 MM/dd/yyyy hh:mm:ss a,使用美國區域設定。 |
建立目錄 | 觸摸新檔案時是否建立不存在的父目錄。自 Ant 1.6.3 起 | 否;預設false |
詳細 | 是否記錄新檔案的建立。自 Ant 1.6.3 起 | 否;預設true |
您可以使用任意數量的巢狀資源集合元素來定義此任務的資源,並參考在其他地方定義的資源。注意:傳遞給此任務的資源必須實作org.apache.tools.ant.types.resources.Touchable
介面,這適用於所有基於檔案系統的資源,例如路徑、檔案集或檔案清單所傳回的資源。
為了向後相容性,由巢狀檔案集比對的目錄也會被「觸發」,請使用 type 選擇器來抑制此動作。這僅適用於直接巢狀到任務的檔案集,不適用於巢狀到路徑或任何其他資源集合的檔案集。
自 Ant 1.6.3 起,可以指定巢狀的 對應器。透過巢狀的 fileset
、filelist
或 file
屬性指定的檔案會使用指定的對應器進行對應。對於每個對應的檔案,都會觸發產生的檔案。如果未指定時間且原始檔案存在,則會使用其時間戳記。如果未指定時間且原始檔案不存在,則會使用目前時間。自 Ant 1.8 起,任務設定 (millis 和 datetime) 優先於原始檔案的時間戳記。
如果 myfile 不存在,則建立它並將修改時間變更為目前時間。
<touch file="myfile"/>
如果 myfile 不存在,則建立它並將修改時間變更為 2000 年 6 月 28 日下午 2:02(對於習慣 24 小時制的人來說是 14:02)。
<touch file="myfile" datetime="06/28/2000 2:02 pm"/>
將在 src_dir 中找到的所有檔案和目錄的修改時間變更為 1974 年 10 月 9 日下午 4:30。
<touch datetime="09/10/1974 4:30 pm"> <fileset dir="src_dir"/> </touch>
如果 myfile 不存在,則建立它並將修改時間變更為 2000 年 6 月 28 日下午 2:02:17(對於習慣 24 小時制的人來說是 14:02:17),如果檔案系統允許一秒的精確度,否則變更為接近的時間。
<touch file="myfile" datetime="06/28/2000 2:02:17 pm"/>
如果 bar 不存在,則建立它並將修改時間變更為 foo 的修改時間。
<touch file="foo"> <mapper type="glob" from="foo" to="bar"/> </touch>
如果 src 目錄中的每個 .java 檔案在 shadow 目錄中不存在,則建立檔案並將這些檔案的修改時間變更為目前時間。
<touch file="foo" datetime="now"> <mapper type="regexp" from="^src(.*)\.java" to="shadow\1.empty"/> </touch>