本文比較了兩個構建工具:Maven和Gradle,并討論了各自的優點和缺點。
Maven簡介
Maven是一種掃大街的大媽都知道的Java構建工具。 如果你還不知道Maven是神馬,可以去這嘎達看看。 Maven提供了一套大多數項目都適用的基本的配置方案。 Maven提供的構建過程可以默認,也可以在有需要時候定制。 這樣做的好處是讓生成配置文件(POM)變得很簡單。 缺點是當涉及到自定義構建流程時,Maven就變得有局限性鳥。
Gradle簡介
Gradle 是一個較新的構建工具基于Ant和Groovy。 Gradle提供了一些默認配置方案,比Maven更加靈活。 生命周期相關的一切構建都可以自定義。 有這玩意,你會覺得很爽的
比較
Maven使用XML來定義生成腳本。和Ant一樣,這是一個安全的選擇,因為大多數人都熟悉XML配置。 Gradle構建腳本是用Groovy寫的。 用XML優勢在于它可以更方便地定義構建邏輯是比較復雜的步驟不僅僅是不變的一系列。 用Groovy的好處就是寫起來比XML標簽簡潔得多。 Groovy的毛病就是熟悉的XML的開發人員比groovy的多,這些爺們必需自己來寫復雜的邏輯。
性能
一些 非正式的測試 表明Gradle 比Maven性能高不了,甚至還低一點。 讓人抓狂的是這倆兄弟都似乎要明顯慢于Ant。 使用Maven構建JBoss應用服務器比用Ant構建要多兩倍的時間。
(Ant是明顯的贏家,Maven和Gradle大約相同)
譯者注:使用Gradle,在一個task里寫了個循環 調用flex的mxmlc,才編譯3個mxml文件,丫的就出現了Java heap space錯誤了。情何以堪啊
依賴配置
通常的Maven項目有一個單一的依賴的靜態配置, 所以一個項目應該有只有一個單一的Artifact。 簡單就是他的優勢,但也缺乏彈性。 Gradle在這方面的更靈活。 可以在創建和處理的時候有多套依賴配置。
(Gradle因為簡單性和靈活性獲勝,Maven和 Ant/Ivy次之)
使用Artifact倉庫
Maven有自己的單一倉庫格式。 Gradle可以使用Ivy倉庫和Maven倉庫。 部署到Maven倉庫是非常容易,Ant和Gradle就需要你多動動腦經了。
(Maven Win,Gradle和Ant/Ivy老二)
加載構建系統的組件
Maven采取的做法是每個用于構建的組件(編譯/jar等)都作為一個插件。 每個插件都有它自己的版本和依賴關系樹。 Gradle的構建系統組件都是分散的。 Maven插件的優點是在于可以獨立更新,無需整個系統更新。Gradle的模型的優點是,編譯需要核心組件以外的組件時才下載。
Maven和Gradle在這點上都比Ant好。 Ant需要Ivy和一些麻煩的配置來實現。
(Maven和Gradle并列,Ant第二因為它需要更多的設置來加載額外的構建組件)
譯者注:少造輪子
構建生命周期
Maven提供有限的構建生命周期訪問。 插件可以連接到生命周期的特定階段,而且只有在核心插件執行。 Gradle很容易這方面NB,因為它可以輕松地訪問任何生成的一部分,并允許用Groovy代碼處理。Ant也可以訪問任何一部分構建,但是需要用任務來實現而不是代碼,所以還是不如Gradle強大。
(Gradle毫無鴨梨,Ant老二,Maven最渣)