將檔案移至新的檔案或目錄,或將檔案集合移至新的目錄。預設情況下,如果目標檔案已存在,則會覆寫它。當 overwrite 關閉時,只有當來源檔案比目標檔案新,或當目標檔案不存在時,才會移動檔案 - 請參閱 granularity 屬性以了解 Ant 認為較新的觀念。
資源集合 用於選取要移動的檔案群組。僅支援基於檔案系統的資源集合,其中包括 檔案集、檔案清單 和 路徑。在 Apache Ant 1.7 之前,只有 <fileset>
才被支援為巢狀元素。若要使用資源集合,必須設定 todir 屬性。
自 Ant 1.6.3 起,file 屬性可用於移動(重新命名)整個目錄。如果 tofile 表示現有檔案,或在 todir 中有同名目錄,則動作將會失敗。
屬性 | 說明 | 必要 |
---|---|---|
file | 要移動的檔案或目錄 | file 或至少一個巢狀資源集合元素之一 |
preservelastmodified | 讓已移動檔案的最後修改時間與原始來源檔案相同。(注意:Java 1.1 中忽略) | 否;預設為 false |
tofile | 要移動到的檔案 | 使用 file 屬性時,可以使用 tofile 或 todir。對於巢狀檔案集,如果檔案集大小大於 1,或如果檔案集中唯一的項目是目錄,或如果已經指定 file 屬性,則只允許使用 todir |
todir | 要移動到的目錄 | |
overwrite | 即使目標檔案較新,也覆寫現有檔案 | 否;預設為 true |
force | 覆寫唯讀目標檔案。自 Ant 1.8.2 起 | 否;預設為 false |
filtering | 表示在移動過程中是否應進行代碼過濾。請參閱 filter 任務以了解過濾器的運作方式。 | 否 |
flatten | 忽略來源目錄的目錄結構,將所有檔案複製到由 todir 屬性指定的單一目錄中。請注意,您可以使用 flatten mapper 來達成相同的目的 | 否;預設為 false |
includeEmptyDirs | 複製包含在巢狀 FileSet 中的空目錄。 | 否;預設為 yes |
failonerror | 如果為 false,則在要複製的檔案不存在或其中一個巢狀 fileset 指向不存在的目錄,或在移動時發生錯誤時,記錄警告訊息,但不要停止建置。 | 否;預設為 true |
quiet | 如果為 true且 failonerror 為 false,則在要複製的檔案不存在或其中一個巢狀 fileset 指向不存在的目錄,或在複製時發生錯誤時,不要記錄警告訊息。自 Ant 1.8.3 起。 |
否;預設為 false |
verbose | 記錄正在移動的檔案。 | 否;預設為 false |
encoding | 在過濾複製檔案時要假設的編碼。自 Ant 1.5 起。 | 否;預設為 JVM 預設字元編碼 |
outputencoding | 在寫入檔案時要使用的編碼。自 Ant 1.6 起。 | 否;預設為已設定的 encoding,否則為 JVM 預設字元編碼 |
enablemultiplemappings | 如果為 true,則任務將處理給定來源路徑的所有對應。如果為 false,則任務將只處理第一個檔案或目錄。此屬性僅在有 mapper 子元素時才相關。自 Ant 1.6 起。 |
否;預設為 false |
granularity | 在判定檔案過期之前給予的寬限毫秒數。這是必要的,因為並非每個檔案系統都支援追蹤到毫秒等級的最後修改時間。如果來源和目標檔案位於時鐘不同步的不同機器上,這也可能很有用。自 Ant 1.6 起。 | 否;預設為 0 毫秒,或在 DOS 系統上為 2 秒 |
performGCOnFailedDelete | 如果 Ant 無法刪除檔案或目錄,它將重試一次操作。如果此旗標設定為 true,它將在重試刪除之前執行垃圾回收。 已知將此旗標設定為 true可以解決 Windows 上的一些問題(在 Windows 上預設為 true),以及位於 NFS 共享上的目錄樹的問題。自 Ant 1.8.3 起 |
否;在 Windows 上預設為 true,在其他作業系統上預設為 false |
您可以使用嵌套的 mapper 元素來定義檔案名稱轉換。<move>
使用的預設 mapper 是 identity。
請注意,傳遞給 mapper 的來源名稱取決於您使用的資源集合。如果您使用 <fileset>
或提供基本目錄的任何其他集合,傳遞給 mapper 的名稱將是相對於基本目錄的相對檔案名稱。在任何其他情況下,將使用來源的絕對檔案名稱。
Move 任務支援嵌套的 FilterChain。
如果在同一個 <move>
任務中使用 <filterset>
和 <filterchain>
元素,則會先處理所有 <filterchain>
元素,再處理 <filterset>
元素。
移動單一檔案(重新命名檔案)
<move file="file.orig" tofile="file.moved"/>
將單一檔案移動到目錄
<move file="file.orig" todir="dir/to/move/to"/>
將目錄移動到新目錄
<move todir="new/dir/to/move/to"> <fileset dir="src/dir"/> </move>
或,自 Ant 1.6.3 起
<move file="src/dir" tofile="new/dir/to/move/to"/>
將一組檔案移動到新目錄
<move todir="some/new/dir"> <fileset dir="my/src/dir"> <include name="**/*.jar"/> <exclude name="**/ant.jar"/> </fileset> </move>
將檔案清單移動到新目錄
<move todir="some/new/dir"> <filelist dir="my/src/dir"> <file name="file1.txt"/> <file name="file2.txt"/> </filelist> </move>
將 ".bak"
附加到目錄中所有檔案的名稱。
<move todir="my/src/dir" includeemptydirs="false"> <fileset dir="my/src/dir"> <exclude name="**/*.bak"/> </fileset> <mapper type="glob" from="*" to="*.bak"/> </move>