MavenVsGradle

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

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

Maven簡(jiǎn)介

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

Gradle簡(jiǎn)介

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

比較

 

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

性能

 

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

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

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

 

依賴配置

 

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

(Gradle因?yàn)楹?jiǎn)單性和靈活性獲勝,Maven和 Ant/Ivy次之)

 

使用Artifact倉庫

 

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

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

 

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

 

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

 

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

(Maven和Gradle并列,Ant第二因?yàn)樗枰嗟脑O(shè)置來加載額外的構(gòu)建組件)

譯者注:少造輪子

 

構(gòu)建生命周期

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

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

 

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