前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Gradle自定义插件之扩展配置

Gradle自定义插件之扩展配置

作者头像
PhoenixZheng
发布2018-12-14 16:51:30
1.9K0
发布2018-12-14 16:51:30
举报

上一篇文章,我们介绍了Gradle自定义插件的几种基本方法。我们向外提供的插件,一般会把一些经常变化的配置放在Gradle内, 需要变化时修改Gradle文件,不去修改插件内的文件,这就需要用到Gradle的扩展配置。

扩展模型

我们在自定义插件的 groovy 文件中建立一个扩展模型,代码如下:

代码语言:javascript
复制
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:

代码语言:javascript
复制
apply plugin: com.example.DemoPlugin

externalConfig {
    message = 'hello world!'
}

然后再调用 gradle printExternalConfig 就可以看到相应的输出了。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-11-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Android每日一讲 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 扩展模型
  • 扩展机制
  • 扩展配置
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档