Gradle简介
项目自动化
项目自动化是相对于传统手动构建项目开发而言的。在传统项目开发模式中,开发人员需要从源代码编译到打包软件,再到发布至测试和产品环境都必须手动操作。项目自动化则可以帮助开发人员消除了手动操作介入的负担。他可以自动便携地构建项目。
构建工具
构建工具是实现项目自动化的关键点。我们可以通过编写构建文件利用构建工具按照构建文件的逻辑进行自动化的项目构建。构建工具还能够进行依赖管理,这就意味着我们不用自己去找jar包,它可以帮我们从仓库下载配置到项目中,同时还可以自动地解析传递依赖。
Java构建工具
Ant
Ant是一个Java编写的开源构建工具。其主要目的是在Java项目中为常用任务提供自动化,例如:编译源码、运行单元测试、打包jar文件和生成Javadoc文档。但是它不提供依赖管理器,所以我们就需要自己管理外部依赖。然而Ant可以和Ivy很好的集成,Ivy是一个独立且完善的依赖管理器。
Ant虽然能够使项目进行自动化构建。但是也有一些缺点。
- 使用XML作为构建脚本,会导致构建脚本过于臃肿。
- 复杂的构建逻辑会产生复杂且难以维护的构建脚本。
- Ant不能在构建项目时显示项目构建的信息。
- Ant如果没有Ivy,使用Ant将很难进行项目管理。
Maven
相对于Ant,Maven认识到标准化项目布局和统一构建生命周期的重要性。Maven选择约定优于配置的思想。Maven拥有标准的目录布局、完整的构建生命周期(根据项目开发的不同阶段划分出不同的生命周期)以及完整的依赖管理。Maven还可以通过开发插件来提供更多强大的功能。
Maven虽然看起来比较完美了,但是还是有一些不可避免的缺陷。
- Maven推荐一个默认的结构和生命周期,这样会有很多限制。
- 为Maven写定制的扩展过于累赘,需要额外地学习Mojos。
Gant
在Ant的基础上提供了Groovy的DSL。
下一代构建工具(Gradle)
Gradle可以说是构建工具的集大成者。他拥有下面先辈构建工具的优点。
- Ant:灵活性、完全控制、目标链。
- Ivy:依赖管理。
- Maven:约定优于配置、多模块项目、插件扩展。
- Gant:在Ant上提供Groovy的DSL。
不仅如此它还有引人注目的特性集:
- 可表达性的构建语言和底层API。
- 使用Groovy作为构建脚本,灵活而强大。或者也可以使用Kotlin。
- 可以灵活约定任务。
- 强大的依赖管理。
- 可以轻松的扩展,Gradle提供了丰富的API,可以使用Groovy、Java、Kotlin调用API进行插件的开发。
- 可以集成其他构建工具。
- 持续交付。