自定義Gradle Plugin和Groovy語法簡單介紹

1.介紹:

官方介紹


image.png

翻譯:Gradle插件將構建邏輯的可重用部分打包起來径缅,這些邏輯可以跨許多不同的項目和構建使用秕豫。Gradle允許您實現自己的插件硕并,這樣您就可以重用您的構建邏輯,并與他人共享它怎炊。

2.Gradle Plugin本質

本質:就是把邏輯獨立的代碼抽取和封裝

3.Plugin的最基本用法

?3.1我們在 build.gradle 里編寫:
//plugin簡單使用
apply plugin: PluginDemo

class PluginDemo implements Plugin<Project>{
    @Override
    void apply(Project target) {
            println "Hello"
        }
  }

通過控制臺輸入:gradlew
打印結果:

plugin_one.gif

?3.2.如何動態(tài)配置呢谭企。像我們build.gradle文件中android{ ... }那樣廓译?

??使用:extension,他不是一個類债查。

//plugin簡單使用
apply plugin: PluginDemo

class PluginDemo implements Plugin<Project>{
    @Override
    void apply(Project target) {
        def extension = new ExtensionDemo()
        println "Hello ${extension.name}"
    }
}

class ExtensionDemo{
    def name = "張三"
}

打印結果

plugin_two.gif

使用動態(tài)配置:

//plugin簡單使用
apply plugin: PluginDemo

class PluginDemo implements Plugin<Project>{
    @Override
    void apply(Project target) {
        def extension = target.extensions.create("hencoder",ExtensionDemo)
        //稍后執(zhí)行
        target.afterEvaluate {
            println "Hello ${extension.name}"
        }
    }
}

class ExtensionDemo{
    def name = "張三"
}

hencoder{
    name = "李四"
}

執(zhí)行結果:


plugin_three.gif

4.自定義Plugin

步驟:

? ?1.在Project下創(chuàng)建一個文件非区,文件名為buildStr(名稱必須是這個),或者創(chuàng)建一個javalibrary的model盹廷,注意需要在工程下的setting.gradle中去除新建的plugin
? ?2.在目錄下邊新建resources/META-INF/gradle-plugins/xxx.properties 注意后綴必須是.properties
? ?? ?目錄結構:

? ?? ?resources
? ?? ?? ?META-INF
? ?? ?? ?? ?gradle-plugins
? ?? ?? ?? ???xxx.properties(xxx為插件的名稱征绸,最終需要在build.gradle中配置)

? ?3.在main下邊創(chuàng)建一個類,需要為.groovy文件俄占,實現Plugin<Project>管怠,實現apply方法
? ?4.在xxx.properties文件添加 implementation-class=包名.第三步創(chuàng)建的類名
? ?5.通過上方最基本的使用,extension的用法
? ?6.在項目的build.gradle中添加我們的plugin缸榄。
例如:

image.png

執(zhí)行結果:


plugin_four.gif

5.關于buildStr的目錄

1.這是 gradle 的?個特殊?錄渤弛,這個?錄的 build.gradle 會?動被執(zhí)?,即使不配配置進settings.gradle
2.buildSrc 的執(zhí)?早于任何?個 project甚带,也早于 settings.gradle她肯。它是?個獨?的存在
3.buildSrc 所配置出來的 Plugin 會被?動添加到編譯過程中的每?個 project 的 classpath,因此它們才可以
  直接使? apply plugin: 'xxx' 的?式來便捷應?這些 plugin
4.settings.gradle 中如果配置了 ':buildSrc' 鹰贵,buildSrc ?錄就會被當做是? Project 晴氨,

因此會被執(zhí)?兩遍。所以在 settings.gradle ??應該刪掉 ':buildSrc' 的配置

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末砾莱,一起剝皮案震驚了整個濱河市瑞筐,隨后出現的幾起案子,更是在濱河造成了極大的恐慌腊瑟,老刑警劉巖聚假,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異闰非,居然都是意外死亡膘格,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進店門财松,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瘪贱,“玉大人,你說我怎么就攤上這事辆毡〔饲兀” “怎么了?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵舶掖,是天一觀的道長球昨。 經常有香客問我,道長眨攘,這世上最難降的妖魔是什么主慰? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任嚣州,我火速辦了婚禮,結果婚禮上共螺,老公的妹妹穿的比我還像新娘该肴。我一直安慰自己,他們只是感情好藐不,可當我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布匀哄。 她就那樣靜靜地躺著,像睡著了一般佳吞。 火紅的嫁衣襯著肌膚如雪拱雏。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天底扳,我揣著相機與錄音铸抑,去河邊找鬼。 笑死衷模,一個胖子當著我的面吹牛鹊汛,可吹牛的內容都是我干的。 我是一名探鬼主播阱冶,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼刁憋,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了木蹬?” 一聲冷哼從身側響起至耻,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎镊叁,沒想到半個月后尘颓,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡晦譬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年疤苹,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片敛腌。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡卧土,死狀恐怖,靈堂內的尸體忽然破棺而出像樊,到底是詐尸還是另有隱情尤莺,我是刑警寧澤,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布生棍,位于F島的核電站颤霎,受9級特大地震影響,放射性物質發(fā)生泄漏。R本人自食惡果不足惜捷绑,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望氢妈。 院中可真熱鬧粹污,春花似錦、人聲如沸首量。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽加缘。三九已至鸭叙,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間拣宏,已是汗流浹背沈贝。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留勋乾,地道東北人宋下。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像辑莫,于是被迫代替她去往敵國和親学歧。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,619評論 2 354

推薦閱讀更多精彩內容