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

1. 新建android module.

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

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

3. 修改mudule下的build.gradle,

build.gradle內容如下

apply plugin: 'groovy'

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

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

4. 實現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文件。
文件內容是

implementation-class=com.houtrry.asm_lifecycle_plugin.LifeCyclePluginDemo

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

7. 修改module下的build.gradle,添加本地maven相關內容

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倉庫地址設置
            repository(url:uri('../repo'))
        }
    }
}

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

8.構建項目,上傳到本地maven倉庫

構建完成后,如圖gradle中出現了asm_lifecycle_plugin,雙擊Tasks/upload下的uploadArchives


image.png

成功后,項目目錄下會出現repo文件夾,里面放著生成好的插件信息和文件


image.png

注意:①如果Gradle沒有出現asm_lifecycle_plugin,可以查看下setting.gradle中是否include了mudule,如果沒有,就加上在build

9.項目中引入plugin

①project下的build.gradle中,buildscript下,repositories里添加maven { url uri('./repo') } 注意,這個repo要和步驟7里設置的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'
單引號內的內容就是步驟6創(chuàng)建的properties文件的文件名


image.png

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

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

相關閱讀更多精彩內容

  • 前言 從2013年Google推出Android Studio(后面以AS簡稱)開始,到現在已經歷經3年,版本也發(fā)...
    dfqin閱讀 1,976評論 1 3
  • 在 Android Studio 構建的項目中,基于 Gradle 進行項目的構建,同時使用 Android DS...
    Ant_way閱讀 7,593評論 0 16
  • Gradle介紹 Gradle是一個基于JVM的新一代構建工具,可以用于自動化自定義有序的步驟來完成代碼的編譯、測...
    孤獨的根號十二閱讀 873評論 0 8
  • 是什么? 在語法上是基于Groovy語言的(Groovy 是一種基于JVM的敏捷開發(fā)語言,可以簡單的理解為強類型語...
    千山萬水迷了鹿閱讀 99,986評論 4 122
  • 人最怕,深交后的陌生,認真后的失去,信任后的背叛,溫柔過后的冷落,最后,動了心的愛情變成了過客。 縱觀戀愛11年,...
    半夏三生閱讀 179評論 0 0

友情鏈接更多精彩內容