1.新建module
新建一個(gè)名稱為plugin的Module,類(lèi)型選擇為L(zhǎng)ibrary或下面的Java or Kotlin Library

新建Module之后,會(huì)有默認(rèn)的文件目錄,多余的文件都可以刪掉的。

我們可以看到main文件夾下有java文件夾,Gradle Plugin可以用java寫(xiě),也可以用kotlin、groovy來(lái)學(xué),喜歡用什么就可以在main文件下新建對(duì)應(yīng)語(yǔ)言的文件夾接口,比如kotlin文件夾。
1.2、新建文件添加依賴
在Gradle 6.4及以后就不用再添加gradleApi()來(lái)配置Plugin的依賴啥的了,直接一個(gè)java-gradle-plugin插件搞定,它會(huì)自動(dòng)把java、gradleApi()依賴添加到項(xiàng)目中。
并且不需要像以前在src/main/resources/META-INF/gradle-plugins/xxx.properties中來(lái)配置你的implementation-class了,直接一個(gè)gradlePlugin{ }配置搞定,Gradle會(huì)自動(dòng)生成META-INF描述文件。
在plugin>build.gradle文件中依賴插件:
plugins {
id 'java-gradle-plugin'
}
配置如下:
gradlePlugin{
plugins{
DependenciesPlugin{
id = 'com.taimei.plugin.dependencies'
implementationClass = 'com.taimei.plugin.DependenciesPlugin'
}
}
}
- id:apply時(shí)引用的plugin id;
- implementationClass:Plugin路徑;
在Gradle 6.4以前:

因?yàn)橐郧斑@些文件夾、配置全是手動(dòng)的,很繁瑣,相比之下,現(xiàn)在更爽多了。
2.本地發(fā)布
本地發(fā)布要比遠(yuǎn)端發(fā)布簡(jiǎn)單多了,雖然遠(yuǎn)端發(fā)布也不難,只是繁瑣。
2.1、Maven插件
首先,比較常用的倉(cāng)庫(kù)是maven,在plugin>build.gradle文件中先依賴一個(gè)maven發(fā)布的插件'maven-publish'
plugins {
id 'maven-publish'
}
dependencies {
implementation 'com.android.tools.build:gradle:7.3.0'
}
2.2 發(fā)布配置
添加發(fā)布配置
group 'com.taimei.plugin'
version '1.0.0'
publishing {
// 配置Plugin GAV
publications {
maven(MavenPublication) {
groupId = group
artifactId = 'dependencies'
version = version
from components.java
}
}
// 配置倉(cāng)庫(kù)地址
repositories {
maven {
url layout.buildDirectory.dir("maven-repo")
}
}
}
2.3 執(zhí)行發(fā)布操作
./gradlew publish
或者在Android Studio右邊Gradle可視化的面板點(diǎn)擊運(yùn)行publish:

2.4使用
ok,本地發(fā)布完了,要想使用這個(gè)插件,跟我們正常依賴插件是一樣的流程。
三步走:
1.在settings.gradle文件中配置插件倉(cāng)庫(kù)地址
pluginManagement {
repositories {
// ...
maven {
url './maven-repo'
}
}
}
2.在project>build.gradle文件中添加插件依賴
buildscript {
dependencies {
classpath('com.taimei.plugin:dependencies:1.0.0')
}
}
3.在app:build.gradle文件中依賴我們的plugin
plugins {
id 'com.yechaoa.plugin.dependencies'
}
以上配置都是在app模塊中添加的,即需要使用的模塊。
編譯看效果:
> Configure project :app
>>>>>>>> com.taimei.plugin.DependenciesPlugin
ok,正確打印出來(lái)了,說(shuō)明我們自定義的plugin已經(jīng)可以對(duì)外提供使用了。
注意:本地依賴使用的時(shí)候,要先發(fā)布,再依賴插件,否則就會(huì)出現(xiàn)cannot found找不到依賴的情況。