MavenVsGradle

版本3  单击查看文档历史记录
创建于: 2009-6-18 下午5:02 作者 Paul Gier - 最后修改:  2010-3-17 下午3:11 作者 Paul Gier

本文比较了两个构建工具: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最渣)

 

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