寫 Ant 建構腳本時,最常反覆查的就是 copy、delete、mkdir、move、echo 這幾個基本命令的寫法。這篇我把自己常用的用法整理成範例清單,涵蓋複製單一檔案與整個目錄、刪除檔案與備份、建立目錄、搬移檔案,以及把訊息寫進日誌檔,需要時直接照抄改路徑就能用。
怎麼用 copy 命令複製檔案和目錄?
copy 主要用來對檔案和目錄做複製,常見三種情境:
- 複製單個檔案:
<copy file="original.txt" tofile="copied.txt"/>
- 對檔案目錄進行複製:
<copy todir="../dest_dir">
<fileset dir="src_dir"/>
</copy>
- 將檔案複製到另外的目錄:
<copy file="source.txt" todir="../home/philander"/>
delete 命令怎麼刪除檔案與目錄?
delete 用來對檔案或目錄進行刪除,幾個常見例子:
- 刪除某個檔案:
<delete file="/home/photos/philander.jpg"/>
- 刪除某個目錄:
<delete dir="/home/photos"/>
- 刪除所有的備份檔或空目錄:
<delete includeEmptyDirs="true">
<fileset dir="." includes="**/*.bak"/>
</delete>
mkdir 命令怎麼建立目錄?
mkdir 用來建立目錄,一次指定完整路徑即可:
<mkdir dir="/home/philander/build/classes"/>
move 命令怎麼移動檔案或目錄?
move 用來移動檔案或目錄,寫法和 copy 很像,但來源會被搬走:
- 移動單個檔案:
<move file="sourcefile" tofile="destfile"/>
- 移動單個檔案到另一個目錄:
<move file="sourcefile" todir="movedir"/>
- 移動某個目錄到另一個目錄:
<move todir="newdir">
<fileset dir="olddir"/>
</move>
echo 命令怎麼輸出訊息到日誌?
echo 的作用是根據日誌或監控器的級別輸出資訊。它包括 message、file、append 和 level 四個屬性,例如把訊息附加寫入日誌檔:
<echo message="Hello,ANT" file="/home/philander/logs/ant.log" append="true"/>
常見問題
Ant 的 copy 和 move 命令有什麼差別?
兩者語法幾乎相同,都支援 file/tofile/todir 與 fileset。差別在於 copy 會保留來源檔案,而 move 在複製後會刪除來源,等同「搬移」。
怎麼用 Ant 刪除所有備份檔(*.bak)?
使用 delete 搭配 fileset 的 includes="**/*.bak",並加上 includeEmptyDirs="true" 把清空後的目錄一併刪掉。** 代表遞迴比對所有子目錄。
Ant 的 echo 可以把訊息寫進檔案嗎?
可以。指定 file 屬性就會把 message 寫入該檔案,再加上 append="true" 表示附加而非覆蓋,適合用來累積建置日誌。
Ant 還在用嗎?不是都用 Maven 或 Gradle 了嗎?
Maven、Gradle 確實是現在的主流,但不少維護中的舊 Java 專案仍是 Ant 腳本。理解 copy、delete、mkdir、move、echo 這些基本命令,對接手舊專案或撰寫簡單的自動化流程仍然很有幫助。
參考資料
延伸閱讀
- 利用 Ant 構建和部署 Java 專案:同樣聚焦 Ant、Java,可接著比較不同情境的做法。
- Ant 建構腳本編寫入門:project、target、property 三大關鍵元素:同樣聚焦 Ant、Java,可接著比較不同情境的做法。
- Ant 建構與部署 Java 專案完整教學:javac、java、jar、war 任務實戰:同樣聚焦 Java、Ant,可接著比較不同情境的做法。
最後更新
2026-08-28(原文發布於 2013-07-28,本文保留原始筆記內容並補上 GEO 結構。)
關於作者
Claire Chang | 企業 AI 導入與流程轉型顧問。專注於 AI Agent 架構設計、ERP 系統整合與企業 AI 治理。
首次發布:2013-07-28
