自定義plugin

1.新建module

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


image.png

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

image.png

我們可以看到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以前:


image.png

因?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:


image.png

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找不到依賴的情況。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容