点击关注上方“大前端圈”
设为“置顶或星标”,第一时间送达技术干货。
我们在上一篇文章Gradle从入门到精通系列(一)—— 为什么要用Gradle?
中学习了,Gradle是什么,Gradle的特性,已经为什么要学习Gradle,本节内容我们继续来学习。
主要包括以下内容:
Gradle安装
Gradle中的基本概念
使用Gradle写一个Hello world
Gradle的任务
常用的Gradle命令
一,Gradle安装:
安装Gradle前要确保系统已经配置好JDK的环境。Gradle 自带了 Groovy 库,所以不需要安装 Groovy。要求JDK的版本在1.7或更高。
Gradle的安装有两种形式:
通过包管理安装,比如Window平台的Chocolatey、Scoop,Mac平台的MacPortsl、Homebrew等等。
手动安装。
关于包管理器安装可以查看官方文档 ,这里主要介绍手动安装,在https://gradle.org/releases/中下载你想要Gradle版本的binary-only。
我这边使用的是Mac,我主要介绍下Mac平台安装方法
步骤如下:
1. 打开终端运行open -e .bash_profile,打开.bash_profile文件来配置环境变量。
2. 在.bash_profile文件中将gradle路径添加到path环境变量中,比如我的就是:
export PAHT=${PAHT}:/Users/wk/Downloads/gradle/bin
3. 保存.bash_profile文件,在终端中运行source ~/.bash_profile,更新.bash_profile文件。
4. 在终端上运行gradle -v命令,查看是否配置成功。
出现上图则表示已经安装成功。
如果你用的是其他的平台,请移步此官方文档寻找安装方法:https://gradle.org/install/
二,gradle基本概念
gradle中有三个非常重要的概念是项目,任务和动作。
项目(project)任务(task)动作(action)
每一次构建都包括至少一个项目,每一个项目又包含一个或者多个任务。一个任务对象包含一系列动作对象,这些动作对象之后会按照顺序执行。
任务(task):task代表一个独立的原子性操作。如编译,打包,生成 javadoc,发布到某个仓库等操作。
每一个build.gradle脚本文件代表着一个项目,任务定义在构建脚本里。
每一个基于gradle构建的项目,都应该至少有一个build.gradle
当初始化构建过程时,Gradle会基于build文件组装项目和任务对象。一个任务对象包含一系列动作对象,这些动作对象之后会按照顺序执行。一个单独的动作对象就是一个待执行的代码块,它和Java中的方法很相似。
三,使用Gradle写一个Hello world
你可以通过在命令行运行 gradle 命令来执行构建,gradle 命令会从当前目录下寻找 build.gradle 文件来执行构建。我们称 build.gradle 文件为构建脚本。严格来说这其实是一个构建配置脚本,这个构建脚本定义了一个 project 和一些默认的 task。
比如,我新建文件夹gradletest,在gradletest文件夹中新建文件build.gradle,文件内容如下:
task hello {
doLast {
println 'hello world!'
}
}
然后在该文件所在目录下运行gradle -q hello构建脚本, 就会打印出“Hello world!”。
-q 参数的作用是什么?
该参数用来控制 gradle 的日志级别,可以保证只输出我们需要的内容。
上面的例子还可以写的更简洁一些,操作符<< 是doLast方法的快捷版本,它们做了相同的事情,如下所示。
task hello < println 'Hello world!'
}
上面的脚本定义了一个叫做 hello 的 task,并且给它添加了一个动作doLast,doLast 代表task执行的最后一个action,通俗来讲就是task执行完毕后会回调doLast中的代码。当执行 gradle hello 的时候, Gralde 便会去调用 hello 这个任务来执行给定操作。这些action操作其实就是一个用 groovy 书写的闭包。
四,Gradle的任务
4.1创建任务的三种方式
1,采用闭包的方式来定义了一个叫做 hello 的任务
task hello < println 'Hello world!'
}
2,直接用任务名称创建
def Task hello=task(hello)
hello.doLast{
println "hello world"
}
3,任务名称+任务配置创建
def Task hello=task(hello,group:BasePlugin.BUILD_GROUP)
hello.doLast{
println "hello world"
}
其中group为任务配置项,它代表了分组。
最常用的是第一种方式来创建任务。
4.2 任务的依赖
在两个任务之间指明依赖关系,任务依赖会决定任务运行的先后顺序,被依赖的任务会在定义依赖的任务之前执行。创建任务间的依赖关系如下所示。
task hello < println 'Hello world!'
}
task go(dependsOn: hello) < println "I'm Gradle"
}
在hello任务的基础上增加了一个名为go的任务,通过dependsOn来指定依赖的任务为hello,因此go任务运行在hello之后。
运行gradle -q go构建脚本,打印结果如下:
Output of gradle -q intro
\> gradle -q intro
Hello world!
I'm Gradle
添加依赖 task 也可以不必首先声明被依赖的 task。
4.3动态定义任务
动态定义任务指的是在运行时来定义任务的名称,如下所示。
4.times { counter ->
task "task$counter" < println "I'm task number $counter"
}
}
这里用到了Groovy语法,关于Groovy语法会在本系列后续的文章进行介绍。times是Groovy在java.lang.Number中拓展的方法,是一个定时器。3.times中循环创建了三个新任务,隐式变量number的值为0,1,2,任务的名称由task加上number的值组成,达到了动态定义任务的目的。
运行gradle -q task1 ,打印结果如下:
Output of gradle -q task1
\> gradle -q task1
I'm task number 1
4.4定义默认任务
Gradle 允许在脚本中定义多个默认任务。
在build.gradle文件中
defaultTasks 'clean', 'run'
task clean < println 'Default Cleaning!'
}
task run < println 'Default Running!'
}
task other < println "I'm not a default task!"
}
运行gradle -q ,打印结果如下:
Output of gradle -q
\> gradle -q
Default Cleaning!
Default Running!
五,常用的Gradle命令
下面介绍一些Gradle中常用的命令操作
查看版本号: gradle -v
编译执行某个task: gradle Task名
静默编译执行某个task: gradle -q Task名(q表示quiet模式,表示编译执行Gradle脚本的过程中,只输出必要的信息. 除了quiet模式外,Gradle中还有其他三种模式)
例如:
gradle -b project1.gradle hello
编译执行某个Project中的某个task:gradle -b Project名 Task名(Gradle默认只执行build.gradle文件中,自定义其他文件xxx.gradle编译运行显式指定Project名称,这里的build.gradle其实表示的就是build Project)
显示所有的Project:gradle projects
显示所有的task:gradle tasks
显示gradle的gui:gradle --gui 或 gradle --gui&(后台运行)
查找所有的gradle命令: gradle --help
最后一定要注意:
gradle脚本文件的后缀必须是.gradle
总结一下
本文介绍了如何安装Gradle,Gradle中的一些基本概念,如何使用Gradle写一个Hello world,Gradle任务的介绍以及常用的Gradle命令,这些知识熟练掌握之后,恭喜,你已经入门了。