Gradle Plugin創(chuàng)建流程記錄

1. 新建android module.

module名就叫做asm_lifecycle_plugin(可以隨意起)吧

2. 刪掉module下的src/main/下的所有文件夾

3. 修改mudule下的build.gradle,

build.gradle內(nèi)容如下

apply plugin: 'groovy'

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    compile gradleApi()
    compile localGroovy()
    compile 'com.android.tools.build:gradle:3.6.3'
}

4. 實現(xiàn)Plugin邏輯

src/main/下創(chuàng)建groovy文件夾, 添加包名com.houtrry.asm_lifecycle_plugin(可以隨意起), com.houtrry.asm_lifecycle_plugin下創(chuàng)建groovy文件, LifeCyclePluginDemo.groovy(文件名可以隨意, 但是后綴得是groovy).
示例如下,這里只是打印project名字(在plugin中,各個module和主工程app都是project)

package com.houtrry.asm_lifecycle_plugin

import org.gradle.api.Plugin
import org.gradle.api.Project

class LifeCyclePluginDemo implements Plugin<Project> {

    @Override
    void apply(Project project) {
        println "===${project.name}===="
    }
}

5.創(chuàng)建resources

src/main 下依次創(chuàng)建三個文件夾, resources\META-INF\gradle-plugins(注意, 這里這三個文件夾的名字是固定的, 不能寫錯).

6.創(chuàng)建properties

在步驟5創(chuàng)建的文件夾gradle-plugins下創(chuàng)建lifecycle_plugin_properties_file_name.properties文件。
文件內(nèi)容是

implementation-class=com.houtrry.asm_lifecycle_plugin.LifeCyclePluginDemo

其中 <implementation-class=> 是固定寫法,后面的內(nèi)容是步驟4里繼承了Plugin的類的路徑
注意:①文件后綴必須是properties朽寞。
②文件名可以隨便寫,但是這個文件名就是后面我們引入插件apply plugin: 'lifecycle_plugin_properties_file_name'時,單引號內(nèi)傳入的插件名

7. 修改module下的build.gradle绽昏,添加本地maven相關(guān)內(nèi)容

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

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    compile gradleApi()
    compile localGroovy()
    compile 'com.android.tools.build:gradle:3.6.3'
}

group = 'com.houtrry.lifecycle_plugin_group'
version = '1.0.0'

uploadArchives {
    repositories {
        mavenDeployer {
            //本地的maven倉庫地址設(shè)置
            repository(url:uri('../repo'))
        }
    }
}

group和version的內(nèi)容可以隨便寫,但是后面會用到
本地maven倉庫名repo也可以修改

8.構(gòu)建項目俏脊,上傳到本地maven倉庫

構(gòu)建完成后全谤,如圖gradle中出現(xiàn)了asm_lifecycle_plugin,雙擊Tasks/upload下的uploadArchives


image.png

成功后爷贫,項目目錄下會出現(xiàn)repo文件夾认然,里面放著生成好的插件信息和文件


image.png

注意:①如果Gradle沒有出現(xiàn)asm_lifecycle_plugin,可以查看下setting.gradle中是否include了mudule漫萄,如果沒有卷员,就加上在build

9.項目中引入plugin

①project下的build.gradle中,buildscript下卷胯,repositories里添加maven { url uri('./repo') } 注意子刮,這個repo要和步驟7里設(shè)置的maven倉庫名一致。dependencies下添加plugin窑睁,plugin由3部分組成挺峡,plugin mudule下build.gradle中聲明的group + plugin mudule名字 + plugin mudule下build.gradle中聲明的version


image.png

②app下的build.gralde中 引入plugin依賴
apply plugin: 'lifecycle_plugin_properties_file_name'
單引號內(nèi)的內(nèi)容就是步驟6創(chuàng)建的properties文件的文件名


image.png

到這里就算完成了gradle plugin項目的創(chuàng)建了。需要注意的是担钮,如果plugin的內(nèi)容發(fā)生了變化橱赠,就需要重新執(zhí)行一遍步驟8,重新上傳到本地maven倉庫

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末箫津,一起剝皮案震驚了整個濱河市狭姨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌苏遥,老刑警劉巖饼拍,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異田炭,居然都是意外死亡师抄,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門教硫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來叨吮,“玉大人辆布,你說我怎么就攤上這事〔杓” “怎么了锋玲?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長涵叮。 經(jīng)常有香客問我惭蹂,道長,這世上最難降的妖魔是什么围肥? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任剿干,我火速辦了婚禮,結(jié)果婚禮上穆刻,老公的妹妹穿的比我還像新娘。我一直安慰自己杠步,他們只是感情好氢伟,可當我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著幽歼,像睡著了一般朵锣。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上甸私,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天诚些,我揣著相機與錄音,去河邊找鬼皇型。 笑死诬烹,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的弃鸦。 我是一名探鬼主播绞吁,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼唬格!你這毒婦竟也來了家破?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤购岗,失蹤者是張志新(化名)和其女友劉穎汰聋,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體喊积,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡烹困,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了注服。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片韭邓。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡措近,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出女淑,到底是詐尸還是另有隱情瞭郑,我是刑警寧澤,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布鸭你,位于F島的核電站屈张,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏袱巨。R本人自食惡果不足惜阁谆,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望愉老。 院中可真熱鬧场绿,春花似錦、人聲如沸嫉入。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽咒林。三九已至熬拒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間垫竞,已是汗流浹背澎粟。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留欢瞪,地道東北人活烙。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像引有,于是被迫代替她去往敵國和親瓣颅。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內(nèi)容

  • 前言 從2013年Google推出Android Studio(后面以AS簡稱)開始譬正,到現(xiàn)在已經(jīng)歷經(jīng)3年宫补,版本也發(fā)...
    dfqin閱讀 1,832評論 1 3
  • 在 Android Studio 構(gòu)建的項目中,基于 Gradle 進行項目的構(gòu)建曾我,同時使用 Android DS...
    Ant_way閱讀 7,335評論 0 16
  • Gradle介紹 Gradle是一個基于JVM的新一代構(gòu)建工具粉怕,可以用于自動化自定義有序的步驟來完成代碼的編譯、測...
    孤獨的根號十二閱讀 789評論 0 8
  • 是什么抒巢? 在語法上是基于Groovy語言的(Groovy 是一種基于JVM的敏捷開發(fā)語言贫贝,可以簡單的理解為強類型語...
    千山萬水迷了鹿閱讀 99,524評論 4 122
  • 人最怕稚晚,深交后的陌生崇堵,認真后的失去,信任后的背叛客燕,溫柔過后的冷落鸳劳,最后,動了心的愛情變成了過客也搓。 縱觀戀愛11年赏廓,...
    半夏三生閱讀 141評論 0 0