Gradle - 插件开发

Gradle 系列

  1. Gradle - 简介
  2. Gradle - Groovy Language
  3. Gradle - DSL
  4. Gradle - Android Plugin DSL
  5. Gradle - 插件开发
  6. Gradle - 插件发布

插件开发

新建 Module

首先新建一个项目,在项目中新建一个 Module 选择 Android Library,并修改目录结构删除不需要的文件如图:

这里写图片描述

目录结构:

ProjectName
    |-src
        |-main
            |-groovy
                |-//插件具体实现逻辑
            |-resources
                |-META-INF
                    |-gradle-plugins
                        |-<插件 group id>.properties
    |-build.gradle//插件构建配置

配置项目

首先在 src/main/groovy 下创建包名 com.jeanboy.plugin.test ,并创建 PluginImpl.groovy 文件:

com.jeanboy.plugin.test

import org.gradle.api.Plugin
import org.gradle.api.Project

class TestPlugin implements Plugin<Project> {

    @Override
    void apply(Project project) {
        project.task('testTask') << {
            println("========================")
            println("hello gradle plugin!")
            println("========================")
        }
    }
}

这时候 PluginImpl.groovy 文件应该是编译不通过的,我们修改下 build.gradle 文件,清空里面所有内容填入下面内容:

apply plugin: 'groovy'//使用 groovy 插件构建项目
apply plugin: 'maven'//用于发布本地 maven 仓库中

dependencies {
    compile gradleApi()//gradle sdk
    compile localGroovy()//groovy sdk
}

repositories {
    jcenter()
    mavenCentral()
}

def groupName = 'com.jeanboy.plugin.test'//组名
def artifactName = 'TestPlugin'//项目名
def versionName = '1.0.1'//版本号

//上传至本地仓库
uploadArchives {
    repositories {
        mavenDeployer {
            pom.groupId = "${groupName}"
            pom.artifactId = "${artifactName}"
            pom.version = "${versionName}"
            repository(url: uri('../PluginRepository'))
        }
    }
}

最后修改 src/main/resources/META-INF/gradle-plugins 下的 properties 文件:

implementation-class=com.jeanboy.plugin.test.PluginImpl
//implementation-class=<这里根据自己的插件自定义配置>

注意:该文件的文件名就是插件的名字。

例如:com.jeanboy.plugin.test.properties

最终使用插件时为:

apply plugin: 'com.jeanboy.plugin.test'

发布到本地仓库

首先找到 uploadArchives ,然后双击执行这个 Task:

这里写图片描述

执行结果如下表示创建插件成功:

这里写图片描述

然后在项目根目录的 PluginRepository 中可以找到我们创建的插件:

这里写图片描述

本地仓库测试

接下来我们进行插件测试,首先需要到 app 目录下配置一下 build.gradle 引入我们的插件:

//在 build.gradle 中最下面添加下面配置
apply plugin: 'com.jeanboy.plugin.test'//使用自定义的插件

//测试本地仓库中的插件
buildscript {
    repositories {
        maven {
            url uri('../PluginRepository')
        }
    }
    dependencies {
        classpath 'com.jeanboy.plugin.test:testPlugin:1.0.1'
    }
}

然后刷新一下 gradle,我们就可以找到刚才创建的 Task:

这里写图片描述

双击执行结果如下:

这里写图片描述

项目源码

https://github.com/jeanboydev/Android-GradlePluginTest

更多文章

https://github.com/jeanboydev/Android-ReadTheFuckingSourceCode



欢迎 长按下图 -> 识别图中二维码

或者 扫一扫 关注我的公众号

这里写图片描述

猜你喜欢

转载自blog.csdn.net/freekiteyu/article/details/81353922
今日推荐