Android Gradle 插件Gradle 自定义 Plugin 插件 ④ ( 为自定义 Gradle 插件的扩展配置扩展 | 在自定义插件中获取扩展属性 )

Posted 韩曙亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android Gradle 插件Gradle 自定义 Plugin 插件 ④ ( 为自定义 Gradle 插件的扩展配置扩展 | 在自定义插件中获取扩展属性 )相关的知识,希望对你有一定的参考价值。

文章目录

Android Plugin DSL Reference 参考文档 :





一、android Gradle 插件扩展的扩展



在上一篇博客 【Android Gradle 插件】Gradle 自定义 Plugin 插件 ③ ( 自定义插件作用 | Android Gradle 插件的扩展 | 自定义 Extension 扩展 ) 中 , 实现了 自定义插件 扩展 Extension , 在 Module 模块下的 build.gradle 构建脚本中 , android 配置块 就是一个 AppExtension 扩展 , 但是在 android 扩展下又定义了 defaultConfig 扩展 , 这是一个 ProductFlavor 配置 ;

android 
    compileSdkVersion 31
    buildToolsVersion "30.0.3"

    defaultConfig 
        applicationId "kim.hsl.android_ui"
        minSdkVersion 18
        targetSdkVersion 31
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    

下面在 自定义 Plugin 插件 Extension 扩展 中 , 再 定义一层 Extension 扩展 ;





二、为自定义 Gradle 插件的扩展配置扩展 并 获取扩展属性



定义扩展类 :

class MyPluginExtensions 
    def name
    def age

定义扩展的扩展类 :

class MyPluginExtensionsExtensions 
    def name
    def age

声明扩展 和 扩展的扩展 :

  • 通过调用 project.扩展名.扩展属性 可获取在构建脚本中配置的 扩展属性 ,
  • 通过调用 project.扩展名.扩展的扩展名.扩展属性 可获取在构建脚本中配置的 扩展属性扩展属性 ;
import org.gradle.api.Plugin
import org.gradle.api.Project

class MyPlugin implements Plugin<Project> 
    @Override
    void apply(Project project) 
        println 'MyPlugin'

        // 创建一个扩展
        // 类似于 Android Gradle 插件中的 android
        // 引入了 MyPlugin 插件后
        // 就可以使用 myplugin 配置块
        def myplugin = project.extensions.create("myplugin", MyPluginExtensions)

        // 为 MyPlugin 自定义插件的 myplugin 扩展定义 扩展 mypluginextension
        myplugin.extensions.create("mypluginextension", MyPluginExtensionsExtensions)

        // 获取 自定义 Gradle 插件的扩展属性 , 必须在 Gradle 分析完成之后才能进行 , 否则获取不到
        project.afterEvaluate 
            println project.myplugin.name
            println project.myplugin.age
            println project.myplugin.mypluginextension.name
            println project.myplugin.mypluginextension.age
        
    

在 build.gradle 构建脚本中 , 进行扩展属性配置 : 先引入插件 , 再配置扩展属性 ;

apply plugin: MyPlugin

myplugin 
    name 'Tom'
    age 18
    mypluginextension 
        name 'Jerry'
        age 19
    

执行编译时 , 会打印出上述扩展属性 :

以上是关于Android Gradle 插件Gradle 自定义 Plugin 插件 ④ ( 为自定义 Gradle 插件的扩展配置扩展 | 在自定义插件中获取扩展属性 )的主要内容,如果未能解决你的问题,请参考以下文章

Android Gradle 插件Gradle 自定义 Plugin 插件 ⑦ ( 自定义 Gradle 插件导入方式 | buildSrc 插件导入 | 构建脚本中自定义插件 | 独立文件 )

Android Gradle 插件Gradle 自定义 Plugin 插件 ⑦ ( 自定义 Gradle 插件导入方式 | buildSrc 插件导入 | 构建脚本中自定义插件 | 独立文件 )

Android Gradle 插件Gradle 自定义 Plugin 插件 ⑤ ( 自定义插件中获定义方法 | 在插件中创建 Gradle 任务 | 代码示例 )

Android Gradle 插件Gradle 自定义 Plugin 插件 ④ ( 为自定义 Gradle 插件的扩展配置扩展 | 在自定义插件中获取扩展属性 )

Android Gradle 插件自定义 Gradle 插件模块 ⑤ ( 完整总结 ) ★★★

Android Gradle 插件自定义 Gradle 插件模块 ① ( 在 Module 模块中自定义 Gradle 插件 | 创建自定义插件类型模块 | 手动导入相关依赖 )