MavenVsGradle

版本3  單擊查看文檔歷史記錄
創(chuàng)建于: 2009-6-18 下午5:02 作者 Paul Gier - 最后修改:  2010-3-17 下午3:11 作者 Paul Gier

本文比較了兩個構(gòu)建工具:Maven和Gradle,并討論了各自的優(yōu)點和缺點。

Maven簡介

Maven是一種掃大街的大媽都知道的Java構(gòu)建工具。 如果你還不知道Maven是神馬,可以去這嘎達看看。 Maven提供了一套大多數(shù)項目都適用的基本的配置方案。 Maven提供的構(gòu)建過程可以默認,也可以在有需要時候定制。 這樣做的好處是讓生成配置文件(POM)變得很簡單。 缺點是當(dāng)涉及到自定義構(gòu)建流程時,Maven就變得有局限性鳥。

Gradle簡介

Gradle 是一個較新的構(gòu)建工具基于Ant和Groovy。 Gradle提供了一些默認配置方案,比Maven更加靈活。 生命周期相關(guān)的一切構(gòu)建都可以自定義。 有這玩意,你會覺得很爽的

比較

 

Maven使用XML來定義生成腳本。和Ant一樣,這是一個安全的選擇,因為大多數(shù)人都熟悉XML配置。 Gradle構(gòu)建腳本是用Groovy寫的。 用XML優(yōu)勢在于它可以更方便地定義構(gòu)建邏輯是比較復(fù)雜的步驟不僅僅是不變的一系列。 用Groovy的好處就是寫起來比XML標簽簡潔得多。 Groovy的毛病就是熟悉的XML的開發(fā)人員比groovy的多,這些爺們必需自己來寫復(fù)雜的邏輯。

性能

 

一些 非正式的測試 表明Gradle 比Maven性能高不了,甚至還低一點。 讓人抓狂的是這倆兄弟都似乎要明顯慢于Ant。 使用Maven構(gòu)建JBoss應(yīng)用服務(wù)器比用Ant構(gòu)建要多兩倍的時間。

(Ant是明顯的贏家,Maven和Gradle大約相同)

譯者注:使用Gradle,在一個task里寫了個循環(huán) 調(diào)用flex的mxmlc,才編譯3個mxml文件,丫的就出現(xiàn)了Java heap space錯誤了。情何以堪啊

 

依賴配置

 

通常的Maven項目有一個單一的依賴的靜態(tài)配置, 所以一個項目應(yīng)該有只有一個單一的Artifact。 簡單就是他的優(yōu)勢,但也缺乏彈性。 Gradle在這方面的更靈活。 可以在創(chuàng)建和處理的時候有多套依賴配置。 

(Gradle因為簡單性和靈活性獲勝,Maven和 Ant/Ivy次之)

 

使用Artifact倉庫

 

Maven有自己的單一倉庫格式。 Gradle可以使用Ivy倉庫和Maven倉庫。 部署到Maven倉庫是非常容易,Ant和Gradle就需要你多動動腦經(jīng)了。

(Maven Win,Gradle和Ant/Ivy老二)

 

加載構(gòu)建系統(tǒng)的組件

 

Maven采取的做法是每個用于構(gòu)建的組件(編譯/jar等​​)都作為一個插件。 每個插件都有它自己的版本和依賴關(guān)系樹。 Gradle的構(gòu)建系統(tǒng)組件都是分散的。 Maven插件的優(yōu)點是在于可以獨立更新,無需整個系統(tǒng)更新。Gradle的模型的優(yōu)點是,編譯需要核心組件以外的組件時才下載。

 

Maven和Gradle在這點上都比Ant好。 Ant需要Ivy和一些麻煩的配置來實現(xiàn)。

(Maven和Gradle并列,Ant第二因為它需要更多的設(shè)置來加載額外的構(gòu)建組件)

譯者注:少造輪子

 

構(gòu)建生命周期

Maven提供有限的構(gòu)建生命周期訪問。 插件可以連接到生命周期的特定階段,而且只有在核心插件執(zhí)行。 Gradle很容易這方面NB,因為它可以輕松地訪問任何生成的一部分,并允許用Groovy代碼處理。Ant也可以訪問任何一部分構(gòu)建,但是需要用任務(wù)來實現(xiàn)而不是代碼,所以還是不如Gradle強大。

(Gradle毫無鴨梨,Ant老二,Maven最渣)

 

翻譯至  http://community.jboss.org/wiki/MavenVsGradle