资料:https://zhuanlan.zhihu.com/p/33017826
/**
* 分别定义Extension1 和 Extension2 类,申明参数传递变量
*/
class Extension1 {
String testVariable1 = null
}
class Extension2 {
String testVariable2 = null
}
/**
* 插件入口类
*/
class TestPlugin implements Plugin<Project> {
@Override
void apply(Project project) {
//利用Extension创建e1 e2 闭包,用于接受外部传递的参数值
project.extensions.create('e1', Extension1)
project.extensions.create('e2', Extension2)
//创建readExtension task 执行该task 进行参数值的读取以及自定义逻辑...
project.task('readExtension') {
println 'TestPlugin apply'
println 'e1 = ' + project['e1'].testVariable1
println 'e2 = ' + project['e2'].testVariable2
}
}
}
/**
* 依赖我们刚刚自定义的TestPlugin,注意 使用e1 {} || e2{} 一定要放在apply plugin:TestPlugin 后面, 因为 app plugin:TestPlugin
* 会执行 Plugin的apply 方法,进而利用Extension 将e1 、e2 和 Extension1 Extension2 绑定,编译器才不会报错
*/
apply plugin: TestPlugin
e1 {
testVariable1 = 'testVariable1'
}
println 'testVariable1-----------'
e2 {
testVariable2 = 'testVariable2'
}
println 'testVariable2-----------'
来源:CSDN
作者:Android_Developer_M
链接:https://blog.csdn.net/j18874964028sss/article/details/103993649