这是我参与更文挑战的第4天,活动详情查看:更文挑战
前言:
创建一个android项目默认使用Groovy作为Gradle的语言。而我们也可以更改为我们熟悉的kotlin语言作为脚本进行编写
Groovy DSL脚本文件使用.gradle为后缀而kotlin编写脚本语言的话后缀需更改为.gradle.kts
首先Gradle脚本为配置脚本。当脚本执行时,它会配置一个特定类型的对象。例如,当一个构建脚本执行时,它会配置一个Project类型的对象。此对象称为脚本的委托对象。下表显示了每种Gradle脚本类型的委托。
脚本类型 | 代理对象 |
---|---|
Build script | Project |
Init script | Gradle |
Build script | Settings |
我们在配置脚本时使用对应的代理对象中的方法
构建脚本由多个语句和脚本块组成。语句可以包括方法调用、属性赋值和局部变量定义。脚本块是以闭包作为参数的方法调用。闭包被视为配置闭包,它在执行时配置一些委托对象。下面列出了顶级脚本块。
函数 | 作用 |
---|---|
allprojects { } | 配置此项目及其每个子项目 |
buildscript { } | 如果构建脚本需要使用外部库,则可以将它们添加到构建脚本本身的脚本的类路径中 |
dependencies { } | 添加项目的依赖 |
repositories { } | 项目的存储库如jcenter |
sourceSets { } | 配置项目的源 |
subprojects { } | 配置此项目的子项目 |
artifacts { } | 发布的配置 |
buildscript中repositories和allprojects中repositories的区别?
buildscript中的声明是gradle脚本自身需要使用的资源。可以声明的资源包括依赖项、第三方插件、maven仓库地址等。而在build.gradle文件中直接声明的依赖项、仓库地址等信息是项目自身需要的资源
Gradle项目构建生命周期
Gradle的生命周期分三个阶段,初始化阶段init,配置阶段configration,执行阶段excute。
-
初始化阶段
通过setting.gradle判断有哪些项目需要初始化,加载所有需要初始化的项目的build.gradle文件,并为每个项目创建Project对象
-
配置阶段
执行各项目下的build.gradle脚本,完成project配置,并且构造task任务依赖关系图以便在执行阶段按照依赖关系执行Task中的代码
3.执行阶段
通过配置阶段的Task依赖关系图,按顺序执行Task中的动作代码,就是执行Task中写在 doFirst和doLast的代码
动作代码: 任务调用才会执行的代码