Android工程buildsrc调试多个gradle plugin

2,189 阅读1分钟

痛点

实际开发过程中,Android项目中往往会有多个gradle plugin,有些可能是三方库的,有些可能是自定义的。自定义插件往往会根据不同功能,封装成不同的插件。对于本地调试gradle plugin,官方方案是把插件代码放在buildsrc目录下,默认只支持同时调试一个plugin。

buildsrc目录支持多个plugin调试方案

app中的build.gradle

//第一个插件
apply plugin: com.keding.plugins.plugin.MyFirstPlugin
//第二个插件
apply plugin: com.keding.plugins.plugin.MySecondPlugin

buildsrc目录结构:

├── buildsrc
│   ├── build.gradle
│   ├── buildsrc.iml
│   ├── gradle-plugin-first
│   │   ├── gradle-plugin-first.iml
│   │   └── src
│   │       └── main
│   │           └── groovy
│   │               └── com.keding.plugins
│   │                   └── plugin
│   │                       └── MyFirstPlugin.groovy
│   ├── gradle-plugin-second
│   │   ├── gradle-plugin-second.iml
│   │   └── src
│   │       └── main
│   │           └── groovy
│   │               └── com.keding.plugins
│   │                   └── plugin
│   │                       └── MySecondPlugin.groovy
│   └── settings.gradle

buildsrc目录下的build.gradle(核心)

sourceSets {
    main {
        groovy {
            srcDir 'gradle-plugin-first/src'
            srcDir 'gradle-plugin-second/src'
        }
    }
}

plugin代码

class MyFirstPlugin implements Plugin<Project> {

    @Override
    void apply(Project project) {
        println("自定义插件MyFirstPlugin执行了!!!" + " project name:" + project.getName())
    }
}

代码执行结果

> Configure project :app
自定义插件MyFirstPlugin执行了!!! project name:app
自定义插件MySecondPlugin执行了!!! project name:app

BUILD SUCCESSFUL in 9s