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