Gradle入门
Gradle是一款优秀的构建工具,它的DSL基于Groovy实现,可以通过代码来控制构建。Gradle构建的大部分功能都是通过插件的方式实现。
Gradle环境配置
Linux Ubuntu环境下搭建Gradle环境
Ubuntu 16.04
下载地址:https://gradle.org
下载的版本为 all版本,all版本包含了Gradle SDK所有相关的内容。
all 版本的目录包括:
- bin
- docs:API、DSL 指南等文档
- init.d gradle的初始话脚本目录
- lib 相关库
- LICENSE
- media 一些icon资源
- NOTICE
- samples 示例
- src 源文件
运行gradle
要运行gradle必须把 GRADLE_HOME/bin目录添加到环境变量PATH的路径中
Ubuntu 命令
GRADLE_HOME=/usr/local/gradle/gradle-3.5
PATH=${PATH}:${GRADLE_HOME}/bin
export GRADLE_HOME PATH
$:source ~/.bashrc
然后在控制台输入
gradle -v
打印出gradle版本号、Groovy版本号、JVM等相关信息 则表示已经配置成功
Gradle版Hello World
- 新建一个目录。然后在该目录下创建一个文件,build.gradle 输入一下内容:
task hello{
doLast{
printin 'Hello World gradle'
}
}
- 打开终端,然后定位到build.gradle 使用gradle -q hello 来执行构建脚本
$ gradle -q hello
Hello World gradle
分析执行过程:
build.gradle是Gradle默认的构建脚本文件,执行Gradle命令会默认加载当前目录下的build.gradle脚本。
我们写的这个build.gradle 定义了一个任务Task,任务的名字叫hello。并且给hello添加了一个动作,官方的名字叫做Action。其实就是一段Groovy语言实现的闭包。也就是业务代码逻辑或者回调实现。doLast就意味着Task执行完毕之后要回调doLast的这部分闭包代码实现
对于 gradle -q hello 这段运行命令,要执行build.gradle脚本中定义的名为hello的Task,-q参数用于控制gradle输出的日志级别
任务语句中:println'hello world'是System.out.println("hello world")的简写方式,gradle可以识别它。
Gradle Wrapper
Wrapper就是对Gradle的一层封装,便于在团队开发过程中统一Gradle构建的版本,这样大家都可以使用统一的Gradle来进行版本构建。
Wrapper在Windows下是一个批处理脚本,在Linux中是一个shell脚本。
当使用Wrapper启动Gradle的时候,Wrapper会检查Gradle有没有被下载关联,如果没有会从配置库(Gradle官方库)进行下载并运行构建。
使用Wrapper的好处是我们不需要专门去配置环境,只需要执行Wrapper命令。
生成Wrapper
Gradle提供了内置的Wrapper task帮助我们自动生成Wrapper所需的目录文件,在一个项目的根目录中输入gradle wrapper即可生成:
gradle wrapper
:wrapper
BUILD SUCCESSFUL
Total time: 0.859 secs
- 生成的文件结构
- gradle
- wrapper
- gradle-wrapper.jar
- gradle-wrapper.properties
- wrapper
- gradlew
- gradlew.bat
gradlew和gradlew.bat分别是Linux和Windows下的可执行脚本,用法和Gradle原生的命令是一样的。
gradle-wrapper.jar是具体业务逻辑实现的jar包,gradlew最终还是使用java执行这个jar包来执行相关Gradle操作
gradle-wrapper.properties是配置文件,用于配置Gradle的版本等
- gradle
Wrapper配置
在执行gradle wrapper生成相关文件的时候,可以指定一些参数,来控制Wrapper的生成
--gradle-version 用于指定gradle版本
--gradle-distribution-url 用于指定Gradle发行版的url地址
如果在调用gradle wrapper 的时候不添加任何的参数,那么就会使用当前Gradle的版本作为生成的Wrapper的gradle version
gradle-wrapper.properties
配置文件字段:
distributionBase:下载的Gradle压缩包解压后存储的主目录
distributionPath:相对于distributionBase的解压后的Gradle压缩包的路径
zipStoreBase:存放zip压缩包路径
distributionUrl:Gradle发行版压缩包的下载地址
自定义Wrapper Task
task wrapper(type:Wrapper){
gradleversion = '2.4'
}
Gradle 日志
Gradle日志级别:
- ERROR 错误消息
- QUIET 重要消息
- WARING 警告消息
- LIFECYCLE 进度消息
- INFO 信息消息
- DEBUG 调试消息
我们需要输出指定级别以上的消息时
# 输出QUIET级别及其之上的日志信息
$ gradle -q tasks
# 输出INFO级别及其之上的日志信息
$ gradle -i tasks
- 无选项 LIFECYCLE及其更高级别
- q或者 --quiet QUIET及其更高级别
- -i或者 --info INOF及其更高级别
- -d或者 --dubug DEBUG及其更高级别
输出错误堆栈信息
在构建失败的情况下,我们可以输出错误的堆栈信息来帮助我们排查错误
- 无选项 不输出
- -s或者 --stacktrace 输出关键性的堆栈信息
- -S或者 --full-stracktrace 输出全部堆栈信息
日志信息调试
我们在编写Gradle脚本的时候,需要输出一些日志来验证我们的逻辑是否正确
我们可以使用 println来进行打印,还可以使用内置的logger灵活地控制输出不同级别的日志
- logger.quiet('quiet信息')
- logger.error('error信息')
- logger.warn('warn信息')
- logger.lifecycle('lifecycle信息')
- logger.info('info信息')
- logger.debug('debug信息')