了解了自定义gradle插件的流程,就到了怎么实现一个完整的插件。然后就需要明白gradle究竟在干什么。
构建块
每个Gradle构建都包括三个基本构建块:project、task、property。每个构建至少包含一个project,每个project又包含一个或多个task,project和task通过暴露property来控制构建。
项目(project)
一个项目(project)代表一个正在构建的组件,当程序启动时,gradle基于build.gradle中的配置实例化prg.aradle.api.Project类,并且能通过project变量使其隐式使用。
project中的重要方法
构建基本配置
- apply(option: Map<String,?>)
- buildscript(config: Closure)
依赖管理
- dependencies(config: Closure)
- configurations(config: Closure)
- getDependencies()
- getConfigurations()
get/set属性
- getAnt()
- getName()
- getDescription()
- getGroup()
- getVersion()
- getLogger()
- setDescription(description: String)
- setVersion(version: Object)
创建文件
- file(path: Object)
- files(paths: Object…)
- fileTree(baseDir: Object)
创建Task
- task(args: Map<String,?> ,name: String)
- task(args: Map<String,?> ,name: String, c: Closure)
- task(name: String)
- task(name: String, c:Closure)
任务(task)
任务分动作任务(task action)和依赖任务(task dependency)
task中的主要方法
task依赖
- dependsOn(tasks: Object…)
动作定义
- doFirst(action: Closure)
- doLast(action)
- getAction()
输入/输出数据说明
- getAnt()
- getDescription()
- getEnable()
- getGroup()
- setDescription(description: String)
- setEnable(enabled: boolean)
- setGroup(group: String)
属性(property)
每个项目和任务多可以通过get/set方法访问属性值,gradle支持扩展属性。
gradle属性
- gradle属性可以通过在
gradle.properties
文件中直接声明来添加到项目中 - 可以自定义
task使用
每个新创建的task都是org.gradle.api.DefaultTask的子类
1 | public class Task1 extends DefaultTask { |
gradle 构建的生命周期
- 初始化阶段
gradle为项目创建一个project实例,找出依赖关系,但是在这个阶段所有脚本代码不执行。
- 配置阶段
gradle构造了一个模型来表示任务,决定那些task需要运行,每次构建所有配置代码都会执行。
- 执行阶段
顺序执行
I'm so cute. Please give me money.
- Post link: http://dongkw.github.io/2020/03/31/gradle%E8%87%AA%E5%AE%9A%E4%B9%89%E6%8F%92%E4%BB%B62%EF%BC%88%E5%8E%9F%E7%90%86%EF%BC%89/
- Copyright Notice: All articles in this blog are licensed under unless stating additionally.
若没有本文 Issue,您可以使用 Comment 模版新建。
GitHub Issues