插件开发

February 14, 2019 · View on GitHub

新建 Module

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

05

目录结构:

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:

06

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

07

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

08

本地仓库测试

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

081

双击执行结果如下:

09

项目源码

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

我的公众号

欢迎你「扫一扫」下面的二维码,关注我的公众号,可以接受最新的文章推送,有丰厚的抽奖活动和福利等着你哦!😍

如果你有什么疑问或者问题,可以 点击这里 提交 issue,也可以发邮件给我 jeanboy@foxmail.com

同时欢迎你 Android技术进阶:386463747 来一起交流学习,群里有很多大牛和学习资料,相信一定能帮助到你!