上一篇文章,我们介绍了Gradle自定义插件的几种基本方法。我们向外提供的插件,一般会把一些经常变化的配置放在Gradle内, 需要变化时修改Gradle文件,不去修改插件内的文件,这就需要用到Gradle的扩展配置。
我们在自定义插件的 groovy 文件中建立一个扩展模型,代码如下:
package com.example
import org.gradle.api.Plugin
import org.gradle.api.Project
class DemoPlugin implements Plugin<Project> {
@Override
void apply(Project project) {
project.extensions.create('externalConfig', ExternalConfig)
project.tasks.create('printExternalConfig') << {
println("DemoPlugin message =" + project.externalConfig.message)
}
}
}
class ExternalConfig {
String message
}
ExternalConfig 就是扩展模型,我们给它加了一个message的属性。 并且在DemoPlugin的apply中将ExternalConfig对象模型与关键字'externalConfig'进行了绑定。 同时创建了一个'printExternalConfig'的task,任务是输出对应的log。
由于Project类实现了ExtensionAware接口,是属于可扩展的。 ExtensionAware对象有一个方法getExtensions(),该方法返回一个ExtensionContainer对象,ExtensionContainer对象可以通过create()方法来注册我们的扩展。 这里就是把externalConfig这个闭包和ExternalConfig这个类关联起来,这就是插件的扩展机制。
定义好扩展模型以后如何进行配置呢?只需要在app下的build.gradle:
apply plugin: com.example.DemoPlugin
externalConfig {
message = 'hello world!'
}
然后再调用 gradle printExternalConfig 就可以看到相应的输出了。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有