新建插件module
File->New module ->Java or Kotlin Library
build.gradle 配置,添加依赖
compileOnly gradleApi()
创建类MyClass,实现Plugin接口,泛型传入Project, 方法apply是插件的入口,引入插件之后,执行build,会直接调用此方法。
import org.gradle.api.Plugin
import org.gradle.api.Project
class MyClass : Plugin<Project> {
override fun apply(project: Project) {
println("Hello Plugin")
}
}
创建文件夹:main/resources/META-INF/gradle.plugins,在此文件夹下面创建配置文件 注意配置文件的名字,就是将来使用插件的时候要引入的插件的名字
目录结构如下图
配置文件custom.plugin.properties内容
//指向插件类的全路径
implementation-class=com.example.customplugin.MyClass
发布插件到本地
在插件Module的目录下创建maven.gradle文件。
maven.gradle配置如下
// 需要引入'maven-publish' 才能使用publishing命令,用于发布插件到本地/maven远程仓库
apply plugin: 'maven-publish'
def versionName = "1.0.1"
publishing {
// 对应classPath: classpath("com.custom.plugin:CustomPlugin:1.0.1")
publications {
release(MavenPublication) {
from components.java
groupId 'com.custom.plugin'
artifactId 'CustomPlugin'
version versionName
}
}
repositories {
// 发布到本地路径
maven {
url = "$rootDir/CustomPlugin/localrepo"
}
}
}
在插件Module的目录在build.gradle文件中中引入maven.gradle
plugins {
id 'java-library'
id 'org.jetbrains.kotlin.jvm'
}
apply from: "maven.gradle"
java {
sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7
}
dependencies {
compileOnly gradleApi()
}
点击Android studio 右侧的gradle,找到CustomPlugin->publishing->- publishAllPublicationsToMavenRepository ,点击发布,发布之后会在CustomPlugin/localrepo目录下生成文件
使用插件 引入本地maven仓库
maven { url "./CustomPlugin/localrepo" }
添加classPath
buildscript { // gradle 构建脚本 自身,所需的
dependencies {
classpath("com.custom.plugin:CustomPlugin:1.0.1")
}
}
引入插件,注意,引入的插件名字和,当时建立的配置文件名字是一致的
执行编译,可以看到日志输出