自定义Gradle插件(十)
生活随笔
收集整理的這篇文章主要介紹了
自定义Gradle插件(十)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
目錄
- 1. 腳本插件
- 2. 對(duì)象插件
- 在build.gradle中寫Plugin
- 創(chuàng)建單獨(dú)的 “buildSrc” Module
- 上傳遠(yuǎn)端maven倉庫
gradle插件分成腳本插件和對(duì)象插件:
- 腳本插件:一個(gè)普通的構(gòu)建腳本,可以導(dǎo)入到其他的構(gòu)建腳本中。
- 對(duì)象插件:實(shí)現(xiàn)了org.gradle.api.Plugin接口。
1. 腳本插件
假設(shè)我們有一個(gè)腳本名為 sayhello.gradle ,它里面有一個(gè)task:
task sayHello << {println 'hello world' }然后我們?cè)赽uild.gradle中依賴這個(gè)外部腳本,調(diào)用Project的apply方法,apply方法調(diào)用時(shí)傳入from屬性。
apply from: 'sayhello.gradle'此時(shí)我們運(yùn)行g(shù)radle sayHello 命令,可以看到sayHello 這個(gè)task執(zhí)行了:
:sayHello hello world2. 對(duì)象插件
有三種形式可以定義對(duì)象插件:
- 直接在build.gradle中編寫Plugin,這種方式這種方法寫的Plugin無法被其他 build.gradle 文件引用。
- 單獨(dú)的一個(gè)Module,這個(gè)Module的名稱必須為buildSrc,同一個(gè)工程中有的構(gòu)建文件夠可以引用這個(gè)插件,但是不能被其他工程引用。
- 在一個(gè)項(xiàng)目中自定義插件,然后上傳到遠(yuǎn)端maven庫等,其他工程通過添加依賴,引用這個(gè)插件。
在build.gradle中寫Plugin
apply plugin:UserPlugin// 實(shí)現(xiàn)Plugin class UserPlugin implements Plugin<Project>{@Overridevoid apply(Project project){println "hello" } }創(chuàng)建單獨(dú)的 "buildSrc" Module
- 創(chuàng)建一個(gè) Module (Phone&Tablet Module 或 Android Librarty 都可以),Module的名稱必須為 buildSrc。
- 將Module里面的內(nèi)容刪除,只保留build.gradle文件和src/main目錄。
- 我們開發(fā)的 gradle 插件相當(dāng)于一個(gè) groovy 項(xiàng)目。所以需要在 main 目錄下新建 groovy 目錄。
- 然后創(chuàng)建一個(gè) Java 文件一樣的方式創(chuàng)建一個(gè) groovy 文件,比如包名為 com.android.xx 的 TestPlugin.groovy 文件。
因?yàn)間radle插件實(shí)際上就是groovy項(xiàng)目,所以需要groovy和gradle的sdk,需要在buildSrc下面的build.gradle修改成:
apply plugin: 'groovy'dependencies {//gradle sdkcompile gradleApi()//groovy sdkcompile localGroovy() } repositories {jcenter() }使用這個(gè)插件,需要在app的build.gradle添加
apply plugin: com.android.hq.testplugin.TestPlugin輸入 ./gradlew tasks,我們可以看到 testPlugin 已經(jīng)在task列表中。
上傳遠(yuǎn)端maven倉庫
com.android.xx.properties,而在其他 build.gradle 文件中使用自定義的插件時(shí)候則需寫成:apply plugin: 'com.android.xx'
總結(jié)
以上是生活随笔為你收集整理的自定义Gradle插件(十)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: gradle的多项目构建(九)
- 下一篇: Gradle学习目录