自定义gradle插件的方式有3种,第一种是直接创建build.gradle文件并在里面编写配置代码,第二种是在项目中新建一个buildSrc模块并在这个模块中编写groovy代码,第三种就是在独立的Module中编写插件,这里介绍的自定义插件采用的是第三种方式,具体的实现步骤如下:
1、新建一个工程项目gradle_plugin_demo,然后在新建一个Module模块custom_plugin(可以是Java Library也可以是Android Library,这里选择的是Java Library)
2、 这里gradle插件的编写选用的是groovy语言,所以需要在custom_plugin的build.gradle文件中配置groovy和gradle相关环境,将build.gradle文件中的内容全部删除,然后添加以下配置代码:
apply plugin: 'groovy'
dependencies {
compile gradleApi()
compile localGroovy()
}
3、在custom_plugin的src/main目录下创建groovy目录,然后创建自己的包(这里是com.znh.plugin),然后在包下面创建一个CustomPlugin类(groovy格式),让这个类实现Plugin接口,并重写里面的apply方法,然后在apply中通过println输出一句话来测试代码是否能正确执行:
package com.znh.plugin
import org.gradle.api.Plugin
import org.gradle.api.Project
class CustomPlugin implements Plugin<Project> {
@Override
void apply(Project project) {
println("CustomPlugin执行了...")
}
}
4、在custom_plugin的src/main下创建resources/META-INF/gradle-plugins目录,然后在这个目录下创建跟自定义Plugin插件相对应的properties文件,gradle会识别这个目录下的properties文件,使用的时候可以通过这个文件的名称来引用对应的插件(文件的名称可以任意定义),这里创建的跟CustomPlugin相对应的properties为com.znh.custom.plugin.properties,这个文件里的内容如下:
implementation-class=com.znh.plugin.CustomPlugin
其中implementation-class可以认为是一个属性名称,而属性的值com.znh.plugin.CustomPlugin是自定义Plugin插件的全类名
5、为了方便插件在项目中使用,可以将插件上传到Maven中,然后在项目中通过gradle引入使用,这里为了方便就直接将插件上传到本地的Maven中了,在公司中可以上传到自己公司的私服中,配置Maven环境需要在custom_plugin的build.gradle中添加如下代码:
apply plugin: 'maven'
group = 'com.znh.plugin'
version = '1.0.0'
uploadArchives {
repositories {
mavenDeployer {
repository(url: uri('../custom_plugin_repo'))
}
}
}
上述配置中,group和version是使用插件时引用依赖需要用到的,二者的值是任意定义的,version代表插件的版本号,插件做了功能修改后,要修改版本号重新发布到Maven中便于版本管理,uri中的“…/custom_plugin_repo”是Maven的仓库地址,这里是设置的本地地址(本工程里的custom_plugin_repo目录下),然后在AS的Gradle操作面板中,找到uploadArchives的Task点击执行,执行完成该插件就上传到了Maven中了,就可以在项目中使用了。
6、经过上述几步,一个自定义的gradle插件就开发并上传完成了,下面就可以在项目中使用测试下了,打开app的build.gradle文件添加一下配置代码:
//注释1
apply plugin: 'com.znh.custom.plugin'
buildscript {
repositories {
google()
jcenter()
maven {
url '../custom_plugin_repo'//注释2
}
}
dependencies {
classpath 'com.znh.plugin:custom_plugin:1.0.0'//注释3
}
}
在注释1处的’com.znh.custom.plugin’就是在第4步中创建的插件相对应的properties文件的名称,注释2处的地址是maven仓库的地址,注释3处是添加插件的依赖其组成是group+插件项目名称+version,group和version是第5步中配置maven环境时自己设置的值,使用时可以直接打开pom文件在pom文件中的groupId+artifactId+version就是这个依赖的全名称:
7、在AS的命令终端中输入 ./gradlew命令进行构建(Mac终端是这个命令),然后查看gradle的打印日志,可以正确打印出在自定义插件中打印的语句:
项目地址:https://github.com/huihuigithub/blog_demo_projects.git(gradle_plugin_demo项目)