Ant
Ant 是 Apache 組織下的一個跨平臺的項目構建工具,它是一個基于任務和依賴的構建系統(tǒng),是過程式的。開發(fā)者需要顯示的指定每一個任務,每個任務包含一組由 XML 編碼的指令,必須在指令中明確告訴 Ant 源碼在哪里,結果字節(jié)碼存儲在哪里,如何將這些字節(jié)碼打包成 JAR 文件。Ant 沒有生命周期,你必須定義任務和任務之間的依賴,還需要手工定義任務的執(zhí)行序列和邏輯關系。這就無形中造成了大量的代碼重復。
http://wiki.jikexueyuan.com/project/gradleIn-action/images/dag4.png" alt="" />
maven
Maven 是 Apache 組織下的一個跨平臺的項目管理工具,它主要用來幫助實現項目的構建、測試、打包和部署。Maven 提供了標準的軟件生命周期模型和構建模型,通過配置就能對項目進行全面的管理。它的跨平臺性保證了在不同的操作系統(tǒng)上可以使用相同的命令來完成相應的任務。Maven 將構建的過程抽象成一個個的生命周期過程,在不同的階段使用不同的已實現插件來完成相應的實際工作,這種設計方法極大的避免了設計和腳本編碼的重復,極大的實現了復用。
Maven 不僅是一個項目構建工具還是一個項目管理工具。它有約定的目錄結構(表 1)和生命周期,項目構建的各階段各任務都由插件實現,開發(fā)者只需遵照約定的目錄結構創(chuàng)建項目,再配置文件中生命項目的基本元素,Maven 就會按照順序完成整個構建過程。Maven 的這些特性在一定程度上大大減少了代碼的重復。