Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言来声明项目设置,而不是传统的XML。当前其支持的语言限于Java、Groovy和Scala,计划未来将支持更多的语言。
1、可表达性的构建语言
在Gradle脚本中每一个元素都有一个与Java类一对一的映射。在许多情况下Groovy化的类相对于Java,代码更加简洁,并且允许使用如闭包这样的新语言特性。
2、Gradle就是Groovy
Ant和maven这样杰出的构建工具使用XML来定义他们的构建逻辑。XML很容易读和写,但是如果内容太多就不容易维护了。XML并不具备很强的表达性,这使得它很难定义复杂的定制逻辑。Gradle采用一种不同的方式,是一种具有可读性和表达性的构建语言。能够用编程语言来表达你需要的构建是Gradle的一大亮点。
3、灵活的约定
Gradle针对你的项目给予指导和有意义的默认值。Gradle中的每个Java项目都确切的知道源代码和测试类文件的位置。但改变默认值也非常的简单,通过约定属性即可改变。Gradle的约定和maven提供的约定相似,但不会让你感觉到被限制。maven非常武断,它建议一个工程包含一个Java源代码目录且只产生一个jar文件。Gradle允许你轻松的打破约定。ant不会给你任何关于如何组织构建脚本方面的指导,以确保最大程度的灵活性。Gradle则折中选择和,即提供约定,又给予你改变约定的能力。Gradle是不武断工具上的一个武断的框架。
4、鲁棒和强大的依赖管理
项目会依赖第三方组件,你编译好的组件也可能会被其他团队所依赖。外部依赖通过仓库获得,而仓库的类型各种各样,从纯文件系统到成熟的企业仓库。外部依赖还可能存在对其他类库或资源的引用——传递性依赖。Gradle提供了一个基础设施去管理解析、获取和存储依赖的复杂性。一旦他们被下载并存储到本地缓存中,你的项目就可以使用了。
5、可扩展的构建
Gradle支持通过指定任务的输入和输出进行增量型构建。它准确的找出哪些任务需要跳过,哪些需要构建或者部分构建。Gradle会负责重新构建需要的部分。
自动化测试、集成测试和功能测试是构建过程的一部分。将需要短时间运行的测试和那些需要准备资源和外部依赖的测试分离是有意义的。Gradle支持测试的并行执行。
6、轻松的可扩展性
大部分企业构建都不一样,它们也不会解决相同的问题。一旦完成了建立基本构建脚本的初始化阶段,你就会开始实现定制逻辑。Gradle提供一种可以在类定义中写定制化逻辑的方法,这样可以让维护和编写代码更简单。如果你想要在多个构建或者项目中分享可重用代码,Gradle提供插件这种扩展机制。而且写一个插件也非常的简单。
7、和其他构建工具的集成
Gradle与Ant、Maven、Ivy可以做很好的集成。对于Ant,Gradle允许你导入现有的构建逻辑并重用标准的Ant任务。Gradle与maven和Ivy仓库100%兼容。你可以从中获取依赖,也可以发布工件。对于已有的maven构建,Gradle提供了一个转换器可以将构建逻辑转换为Gradle的构建脚本。
8、社区和公司的推动
除了Gradle中标准的插件,Gradle社区几乎每天都会发布新的功能(可重用的插件)。Gradleware是Gradle背后的技术服务和支持公司。它不仅提供了关于Gradle的专业建议,它的目标更是指向了更大范围的企业级别的自动化咨询。
总结
总结起来,Gradle是一个为企业准备的构建系统,由具有声明式和表达性的Groovy的DSL支持。它结合了灵活性和基于约定优于配置思想的扩展性,以及对传统依赖管理的支持。它背后有一个专业的服务公司(Gradleware)和强大的社区参与,Gradle成为了许多开源项目和企业构建方案的第一选择。