Gradle - 插件开发1

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

《Gradle - 插件开发1》

目录结构:

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:

《Gradle - 插件开发1》

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

《Gradle - 插件开发1》

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

《Gradle - 插件开发1》

本地仓库测试
接下来我们进行插件测试,首先需要到 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:

《Gradle - 插件开发1》

双击执行结果如下:

《Gradle - 插件开发1》

项目源码
https://github.com/jeanboydev/Android-GradlePluginTest

    原文作者:锐心凌志
    原文地址: https://www.jianshu.com/p/3348d859061e
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞