灵活性

领域特定语言 DSL

  • Maven的自动化构建配置语言是XML
  • Gradle支持GroovyKotlin DSL

Gradle基于脚本,能够进行自定义的构建。虽然从语言上看显然时Gradle更为灵活,但是灵活也带来了额外的学习成本 —— 新的语言。

性能

Gradle存在以下的一些特性,使得其比Maven具有更快的构建速度。

1. 增量构建 Incrementality

Gradle通过跟踪任务Task的输入、输出,只运行必要的文件,且只处理可能发生变化的文件来减少构建工作,从而提高构建速度。

2. 构建缓存 Build Cache

构建缓存可在本地重用Gradle任务的输出,同时任务输出可在不同的机器间共享,是增量构建的功能补充,其起作用的前提是之前已经有了构建输出。

3. 守护进程 Gradle Daemon

Gradle是运行在JVM上的程序,开始运行需要一定的预热时间,Gradle Daemon作为一个长期存在的进程可以减少每次构建时启动JVM的成本,同时可在内存中缓存项目结构、文件、任务等信息,从而能够达到减少后续构建的时间。Gradle Daemon在Gradle 3.0版本后默认启用。

用户体验

Maven更多地时候需要在IDE的支持下来给用户以更好的体验,Gradle除了IDE的支持外,还提供了基于WEB的交互式UI(Build Scan,企业版),可用于调试和优化构建。