編譯插樁之自定義gradle插件

創建自定義的gradle 插件

一、 創建Android Library

gradle 就是groovy 語言編寫的

1.1 main 文件夾下創建groovy文件夾

除了src下的main目錄和build.gradle 其他的都可以刪了

1.2 創建groovy 文件

groovy 文件實現Plugin接口,並且實現apply()方法

package kpa.custom.plugin
import org.gradle.api.Plugin
import org.gradle.api.Project
public class CustomLogPlugin implements Plugin<Project> {
    void apply(Project project) {
        System.out.println("======CustomLogPlugin===")
    }
}

1.3 修改Library的build.gradle

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

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

    implementation gradleApi()
    implementation localGroovy()
    implementation 'com.android.tools.build:gradle:3.6.1'
}

group='danny.lifecycle.plugin'
version='1.0.0'
uploadArchives {
    repositories {
        mavenDeployer {
        //部署地址可以自己設置,既可以在本地,也可以在遠程,這裏設置爲本地(項目根目錄下的)
            repository(url: uri('../custom_log_repo'))
        }
    }
}

1.4 main文件夾下創建resources/META-INF/gradle-plugins路徑, 創建properties文件, 命名格式:插件名稱.peoperties

// 自定義日誌插件(當然 名稱自己隨便定義啊)
custom.log.plugin.properties

1.5 編譯

  • sync now 一下
  • 在右側點擊執行 gradle/tasks/upload/uploadArchives

可以看到在根目錄下有一個custom_log_repo 文件,裏面的就是我們插件的目標文件

1.6 測試

在app 的build.gradle 中引入我們自己的插件

....
//  properties 的文件名
apply plugin: 'custom.log.plugin' 
buildscript {
    repositories {
        google()
        jcenter()
        // 根目錄下的地址
        maven { url '../custom_log_repo'}
    }
    dependencies {
    //group 值 + module 名 + version
        classpath 'kpa.custom.log.plugin:custom.log.plugin:1.0.0'
    }
}
android {
    ...

}
...

執行 ./gradlew clean assembkedebug 構建當前gradle

 CompileThePlugPile ./gradlew clean assembledebug

> Configure project :app
//此處便是我們插件中的打印
======CustomLogPlugin===

BUILD SUCCESSFUL in 24s
27 actionable tasks: 25 executed, 2 up-to-date

到此爲止,完成了gradle 的自定義

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章