首先,我们在项目中新建一个library模块,这里选择Java or Kotlin Library,其实用Android Library也可以,之后我们其实会把大部分文件都删掉。
填完零零碎碎的东西建好了之后,我们把除了build.gradle、src/main之外其他的文件都删掉
接下来我们需要修改build.gradle,具体修改项以及解释可以在代码注释中写到。
apply plugin: 'java-library'
apply plugin: 'kotlin'
//添加groovy和maven插件,groovy是我们选用groovy作为开发插件的语言
//maven是打包提交到远程服务器或本地maven仓库所用
apply plugin: 'groovy'
apply plugin: 'maven'
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
//添加gradle和groovy的依赖
implementation gradleApi()
implementation localGroovy()
}
sourceCompatibility = "1.7"
targetCompatibility = "1.7"
//group和version在使用插件的时候会用到
group='com.proermo.plugin'
version='0.0.1'
uploadArchives {
repositories {
mavenDeployer {
//提交到远程服务器:
// repository(url: "http://www.xxx.com/repos") {
// authentication(userName: "admin", password: "admin")
// }
//本地的Maven地址设置为../repos
repository(url: uri('../repos'))
}
}
}
接下来我们在src/main中新建配置文件以及我们的代码文件。
- main/resources/META-INF/自定义名.properties,这里properties的文件名即是我们使用插件的时候
apply plugin: 'properties文件名' - main/groovy/package/***.groovy,这里就是我们编写插件逻辑代码的地方。
在插件逻辑代码中必须要有的就是plugin的实现类,是我们插件的入口。
//MyPlugin.groovy
package com.proermo
import org.gradle.api.Plugin
import org.gradle.api.Project
public class MyPlugin implements Plugin<Project> {
@Override
void apply(Project project) {
println "========================"
println "hello world!"
println "========================"
}
}
插件逻辑代码写好了,我们就可以在.properties文件中注册我们的插件
//com.proermo.example.plugins.properties
implementation-class=com.proermo.MyPlugin
到了这里我们的插件基本上就完成了,接下来就是打包上传到远端服务器或者本地,然后就是使用。
-
打包,点击图中红色圈住的地方都可以进行打包。
-
使用。
在项目中使用可以先在项目根目录的build.gradle文件添加插件所在的maven仓库地址,我这里是本地所以写的本地目录。以及写入插件的classpath,命名规则是group(插件的gradle文件中定义了):module名:version(插件的gradle文件中定义了)。
// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { ext.kotlin_version = "1.3.72" repositories { maven {//本地Maven仓库地址 url uri('./repos') } google() jcenter() } dependencies { ... //格式为-->group:module:version classpath 'com.proermo.plugin:module_plugins:0.0.1' } } allprojects { repositories { google() jcenter() } } task clean(type: Delete) { delete rootProject.buildDir }接着在需要用的module的gradle文件中添加插件
... //resources/META-INF/gradle-plugins下的properties文件名称 apply plugin: 'com.proermo.example.plugins' android { ... } dependencies { ... }
最后验证我们插件是否使用成功,只要构建我们的项目,看到下图输出即可。
从这次最基本插件开发过程可以了解到,classpath对应的是我们插件的module,而apply plugin其实是将插件module中在properties文件中注册的plugin引入到项目中,每一个插件的module其实是可以注册多个plugin。
最后奉上源码地址