任务基本概念
Gradle里面有两个很重要的概念:projects和tasks。
每一个Gradle的构建是由一个或者多个projects组成,每个project代表着什么,依据于你用Gradle做什么,比如:编译打包源代码可以表示一个project或者自动化部署应用程序也可以表示一个project。
如果按照字面意义来理解project的概念,确实会有些模糊,虽然这里重点不是讲project的概念,但是稍稍的透露一些信息,那就是:在构建中的每一个project,Gradle都会创建一个Project对象,并将这个对象与构建脚本相关联,Project对象与build.gradle是一对一的关系。
一个project是由多个task组成。task代表着构建中可执行的最小单元。它可以是编译源代码,打包Jar文件,发布Jar包到远程仓库等。
简单型任务
Gradle支持两种类型的task,一种是简单类型的task,这种task通常使用一个叫做action的闭包来定义具体的行为,这种类型的task,官方文档说,这种比较适合定义只需要单次执行的任务,但其实这种说法不并不太认同,因为我们更多情况下是以这种方式来自定义我们想要的任务。
增强型任务
另外一种task,字面翻译上,官方称作增强型任务(enhanced task),这种类型任务的行为是预先定义好的,任务会提供一些属性供你配置对应的行为。大部分Grade的插件都是增强型任务,这种类型的任务一般都是开发人员在实现插件时,直接用Groovy语言编程,调用Gradle的API实现。
说的直白点,增强型的任务就是插件提供给你的已经实现了某种特殊目的的任务,你要做的就是对任务进行配置,比如,Java插件的compile,test,package等等。而简单型任务,则在构建脚本中由开发人员自己定义行为。
下面是一个简单类型的task,直接在build.gradle脚本中定义,行为由开发人员自己定义,打印出Hello World:
task hello {
doLast {
println 'Hello world!'
}
}