Gradle版Hello World
build.gradle
是Gradle
默认的构建脚本文件,执行Gradle命令的时候, 会默认加载当前目录下的build.gradle脚本文件。当
然,也可以通过-b
参数指定想要加载执行的文件。
任务(Task)
:Gradle中最小可执行单元
动作(Action)
: 一段Groovy语言实现的闭包
task helloWorld {
doLast {
println "Hello World!"
}
}
doLast
:在Task执行完毕之后要回调doLast这部分闭包的代码实现。
注意,在Groovy
中:
- 方法的调用可以省略签名中的括号,而用空格代替
- 单双引号所包含的内容都是字符串
Gradle Wrapper
Gradle Wrapper是什么?
对Gradle的一层包装,便于统一团队开发过程中Gradle的构建版本。
当你使用Wrapper
启动Gradle的时候,Wrapper会检查Gradle有没有 被下载关联,如果没有将从配置的地址(一般是官方库)进行下载并运行构建。
生成Wrapper
在项目根目录中输入gradle wrapper
即可生成Wrapper所需的目录文件。
生成的文件包括:
gradlew
和gradle.bat
:分别是Linux和Windows下的可执行脚本,其用法与Gradle原生命令一致gradle-wrapper.jar
:具体业务逻辑实现的jar包gradle-wrapper.properties
:配置文件,用于配置使用哪个版本的Gradle
这些生成的Wrapper文件可作为项目的一部分,提交到VCS中,这样其他开发人员就会使用配置好的统一的Gradle进行构建开发。\
Wrapper配置
生成Wrapper相关文件时可以为其指定一些参数来控制,如依赖的版本等。
gradle-wrapper.properties中有distributionUrl
字段,它决定了依赖的版本。如:
https/://services.gradle.org/distributions/gradle-7.0.2-bin.zip
将bin改为all,就可以在开发过程中看到Gradle的源代码了。
此外,通过配置Task也可以配置gradle-wrapper.properties
task wrapper(type: Wrapper) {
gradleversion= '2.4'
archiveBase = 'GRADLE_USER_HOME'
archivePath = 'wrapper/dists '
distributionBase = 'GRADLE_USER_HOME'
distributionPath = 'wrapper/dists'
distributionUrl = 'http\://services.gradle.org/distributions/gradle-2.4-all.zip'
}
Gradle日志
日志级别
在执行task时添加参数即可控制我们想要显示的日志.
输出错误堆栈信息
默认不输出堆栈信息,添加-s
参数输出关键性堆栈信息,-S
则输出全部堆栈信息
使用日志信息调试 logger
除了传统的println
输出日志之外,也可以使用内置的logger
更灵活的输出不同级别的日志~
Gradle命令行
查看所有可执行的tasks
通过运行./gradlew tasks
命令,即可查看所有可执行的tasks
Help任务
通过运行./gradlew help -task
,可以了解每一个task的使用帮助
强制刷新依赖
通过在运行时加上--refresh-dependencies
参数,可以强制刷新依赖
多任务调用
通过命令行执行多个任务非常简单,只需按顺序以空格分开即可。如:./gradlew clean jar
通过任务名字缩写执行
Gradle提供了基于驼峰命名法的缩写调用,如connectCheck,我们可以通过./gradlew connectCheck
,也可以使用 ./gradlew cc
执行。
Gradle 构建生命周期
无论什么时候执行Gradle构建,都会运行3个不同的生命周期阶段:初始化、配置、执行。
- 初始化(Initialization)
Gradle为每个项目创建一个Project实例,在多项目构建中,Gradle会找出哪些项目依赖需要参与到构建中。 - 配置(Configuration)
执行所有项目的构建脚本,也就是执行每个项目的build.gradle文件。这里需要注意的是,task里的配置代码也会在这个阶段执行。 - 执行(Execution)
Gradle按照依赖顺序依次执行task。
参考资料:
《Android Gradle 权威指南》
Android Gradle学习(一):Gradle基础入门