Gradle Plugins
一、plugin 的基本写法
-
直接在build.gradle 中,声明一个Groovy 类继承 Plugin,并执行该任务
class MyTask implements Plugin<Project> { @Override void apply(Project project) { println 'hello' } } apply plugin: MyTask
-
使用跟build.gradle 中的 android 一样声明属性
android { compileSdk 31 }
-
2.1 定义一个 User 类,并声明一个属性
class User { def name = "cx" }
-
2.2 修改 MyTask 代码
class MyTask implements Plugin<Project> { @Override void apply(Project project) { def extension = project.extensions.create("user", User) project.afterEvaluate { println "hello ${extension.name}" } println 'hello' } }
-
2.3 就可以类似于 android 标签一样来给属性赋值,这里的标签名称和 project.extensions.create(“user”, User) 中的第一个参数保持一致
user { name "wangkai" }
-
2.4 执行任务,输出 ‘hello wangkai’
apply plugin: MyTask
-
-
完整代码
class MyTask implements Plugin<Project> { @Override void apply(Project project) { def extension = project.extensions.create("user", User) project.afterEvaluate { println "hello${extension.name}" } println 'hello' } } apply plugin: MyTask user { name "wangkai" } class User { def name = "cx" }
二、写在 buildSrc 中
-
新建 buildSrc Module,并删除 setting.gradle 下的 include ‘:buildSrc’
-
更改buildSrc 中的目录结构,如下
-
在app 的 build.gradle 中使用插件名称调用任务
apply plugin: 'com.cx.plugindemo' user { name "AAAAA" }