讀古今文學網 > Maven實戰 > 1.2.4 Ant >

1.2.4 Ant

Ant不是指螞蟻,而是意指「另一個整潔的工具」(Another Neat Tool),它最早用來構建著名的Tomcat,其作者James Duncan Davidson創作它的動機就是因為受不了Makefile的語法格式。我們可以將Ant看成是一個Java版本的Make,也正因為使用了Java,Ant是跨平台的。此外,Ant使用XML定義構建腳本,相對於Makefile來說,這也更加友好。

與Make類似,Ant有一個構建腳本build.xml,如下所示:

build.xml的基本結構也是目標(target)、依賴(depends),以及實現目標的任務。比如在上面的腳本中,jar目標用來創建應用程序jar文件,該目標依賴於compile目標,後者執行的任務是創建一個名為classes的文件夾,編譯當前目錄的java文件至classes目錄。compile目標完成後,jar目標再執行自己的任務。Ant有大量內置的用Java實現的任務,這保證了其跨平台的特質,同時,Ant也有特殊的任務exec來執行本地命令。

和Make一樣,Ant也都是過程式的,開發者顯式地指定每一個目標,以及完成該目標所需要執行的任務。針對每一個項目,開發者都需要重新編寫這一過程,這裡其實隱含著很大的重複。Maven是聲明式的,項目構建過程和過程各個階段所需的工作都由插件實現,並且大部分插件都是現成的,開發者只需要聲明項目的基本元素,Maven就執行內置的、完整的構建過程。這在很大程度上消除了重複。

Ant是沒有依賴管理的,所以很長一段時間Ant用戶都不得不手工管理依賴,這是一個令人頭疼的問題。幸運的是,Ant用戶現在可以借助Ivy管理依賴。而對於Maven用戶來說,依賴管理是理所當然的,Maven不僅內置了依賴管理,更有一個可能擁有全世界最多Java開源軟件包的中央倉庫,Maven用戶無須進行任何配置就可以直接享用。