gradle插件開發(fā)

純粹是個(gè)人學(xué)習(xí)總結(jié),如有不對的地方請吐槽。

gradle插件開發(fā)

1 創(chuàng)建Gradle Module

(1) 首先,你得新建一個(gè)Android Project
(2) 然后再新建一個(gè)Module,這個(gè)Module用于開發(fā)Gradle插件,同樣,Module里面沒有g(shù)radle plugin給你選,但是我們只是需要一個(gè)“容器”來容納我們寫的插件,因此,你可以隨便選擇一個(gè)Module類型(如Phone&Tablet Module或Android Librarty),因?yàn)榻酉聛硪徊轿覀兪菍⒗锩娴拇蟛糠謨?nèi)容刪除,所以選擇哪個(gè)類型的Module不重要。
(3) 將Module里面的內(nèi)容刪除,只保留build.gradle文件和src/main目錄。
由于gradle是基于groovy,因此,我們開發(fā)的gradle插件相當(dāng)于一個(gè)groovy項(xiàng)目。所以需要在main目錄下新建groovy目錄
(4)groovy又是基于Java,因此,接下來創(chuàng)建groovy的過程跟創(chuàng)建java很類似。在groovy新建包名,如:com.hc.plugin,然后在該包下新建groovy文件,通過new->file->MyPlugin.groovy來新建名為MyPlugin的groovy文件
(5)為了讓我們的groovy類申明為gradle的插件,新建的groovy需要實(shí)現(xiàn)org.gradle.api.Plugin接口。如下:

image.png

(6) 現(xiàn)在,我們已經(jīng)定義好了自己的gradle插件類,接下來就是告訴gradle,哪一個(gè)是我們自定義的插件類,因此,需要在main目錄下新建resources目錄,然后在resources目錄里面再新建META-INF目錄,再在META-INF里面新建gradle-plugins目錄。最后在gradle-plugins目錄里面新建properties文件,注意這個(gè)文件的命名,你可以隨意取名,但是后面使用這個(gè)插件的時(shí)候,會用到這個(gè)名字。比如,你取名為com.hc.gradle.properties,而在其他build.gradle文件中使用自定義的插件時(shí)候則需寫成:

image.png

然后在com.hc.gradle.properties文件里面指明你自定義的類
包路徑必須是你的包路徑

image.png

現(xiàn)在,你的目錄應(yīng)該如下:

image.png

(7) 因?yàn)槲覀円玫絞roovy以及后面打包要用到maven,所以在我們自定義的Module下的build.gradle需要添加如下代碼:

image.png

apply plugin: 'groovy'
apply plugin: 'maven'

dependencies {
//gradle sdk
compile gradleApi()
//groovy sdk
compile localGroovy()
}

repositories {
mavenCentral()
}

2 打包到本地Maven

前面我們已經(jīng)自定義好了插件,接下來就是要打包到Maven庫里面去了,你可以選擇打包到本地,或者是遠(yuǎn)程服務(wù)器中。在我們自定義Module目錄
下的build.gradle添加如下代碼:
uploadArchives {
repositories.mavenDeployer {
repository(url: uri('../repo'))
pom.groupId = 'com.app.plugin'//你的包名
pom.artifactId = 'gradleplugin'//在需要引用插件時(shí)用到
pom.version = '1.0.0'
}
}

其中,group和version后面會用到,我們后面再講。雖然我們已經(jīng)定義好了打包地址以及打包相關(guān)配置,但是還需要我們讓這個(gè)打包task執(zhí)行。點(diǎn)擊AndroidStudio右側(cè)的gradle工具,如下圖所示:

image.png

3 使用自定義的插件

接下來就是使用自定義的插件了,一般就是在app這個(gè)模塊中使用自定義插件,因此在app這個(gè)Module的build.gradle文件中,需要指定本地Maven地址、自定義插件的名稱以及依賴包名。簡而言之,就是在app這個(gè)Module的build.gradle文件中后面附加如下代碼:

image.png

好啦,現(xiàn)在終于運(yùn)行了自定義的gradle插件啦!

4 開發(fā)只針對當(dāng)前項(xiàng)目的Gradle插件

前面我們講了如何自定義gradle插件并且打包出去,可能步驟比較多。有時(shí)候,你可能并不需要打包出去,只是在這一個(gè)項(xiàng)目中使用而已,那么你無需打包這個(gè)過程。

只是針對當(dāng)前項(xiàng)目開發(fā)的Gradle插件相對較簡單。步驟之前所提到的很類似,只是有幾點(diǎn)需要注意:
新建的Module名稱必須為BuildSrc
無需resources目錄

目錄結(jié)構(gòu)如下所示:

image.png

其中,build.gradle內(nèi)容為:
apply plugin: 'groovy'
dependencies {
compile gradleApi()//gradle sdk
compile localGroovy()//groovy sdk
}
repositories {
jcenter()
}

SecondPlugin.groovy內(nèi)容為:

package com.hc.second
import org.gradle.api.Plugin
import org.gradle.api.Project

public class SecondPlugin implements Plugin<Project> {

void apply(Project project) {
    System.out.println("========================");
    System.out.println("這是第二個(gè)插件!");
    System.out.println("========================");
}

}

在app這個(gè)Module中如何使用呢?直接在app的build.gradle下加入

apply plugin: com.hc.second.SecondPlugin

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

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

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