ant与maven我早已有所了解,它们大致的原理我要清楚些,但是对于gradle却并没有什么实际的操练经验,印象中它是一个基于groovy的DSL风格的语法特性,而groovy是一门基于JVM的语言,所以gradle做的一些构建的活也应该是需要jvm运行环境。我理解的则是gradle好像在android app的构建中用的比较多,而大部分开源项目似乎还是以主流的maven构建为主,但是实际是gradle的groovy语法脚本的简洁性导致它必然会比maven的可读性高,而且表达性比xml方式更强;事实上也有不少项目已经开始用gradle方式构建了,它已获得了极大的关注,所以研究一下gradle原理,熟悉一下它的知识体系还是很有必要的。
基本介绍
毫无疑问上面已经说了gradle是像ant和maven一样专注于构建工作的一种工具,只是它抛弃了xml的配置方式,这是与ant,maven的极大不同,那么它采用了一种什么方式来描述构建呢?答案是:基于groovy的内部领域特定语言。哈哈,听起来是不是很高大上,其实不然,只是没有了解过领域特定语言的朋友,可以多上网百度一下,这个简称是DSL,其实这个概念已经不陌生了哦。
构建过程简述
gradle中有两个概念:项目、任务。
- 项目,构建的目标,即构建工具要操纵的主体,即把项目编译,打包,测试等过程之后产生最终的构建产物或实施产物(可部署到生产环境的最终形态)
- 任务,指最小的工作单元,用来执行构建工作中的一个环节
一句话:gradle用任务来构建项目。
配置文件说明
- build.gradle指定了一个项目和它的任务。
- gradle.properties用来配置构建属性。
- settings.gradle对于只有一个项目的构建而言是可选的,如果包含多于一个项目,那么它就是必须的,因为它描述了哪一个项目参与构建。每一个多项目的构建都必须在项目结构的根目录中加入一个设置文件。
gradle插件
gradle把有用的特性封装成插件,达到复用特性,这是不错的设计理念,如同maven的插件机制一样。所以这印证了已经有了好用的轮子,我们只需要学会用就行了,自己造时间是成本,能否造得好也是个问题。所以要想自身变得强大像gradle那样apply一下plugin,这样我们就似乎凭空多了好多技能。
好吧,接下来看看如何get the NB skills,如下:
apply plugin: 'foo'
插件做的事:
- 在项目中添加新的任务
- 为新加的任务提供默认的配置,默认配置会注入一些新的约定
- 可以重写默认配置
- 为项目加入新的依赖