美文网首页
Gradle插件开发入门

Gradle插件开发入门

作者: leewug | 来源:发表于2019-10-09 15:33 被阅读0次

    1、使用AndroidStudio创建一个普通的java Module

    2、修改build.gradle文件,替换成下面的内容

    apply plugin: 'groovy'
    apply plugin: 'maven'
    
    dependencies {
        //gradle sdk
        compile gradleApi()
        //groovy sdk
        compile localGroovy()
        compile 'com.android.tools.build:gradle:2.3.0'
        compile 'org.javassist:javassist:3.25.0-GA'
    }
    
    /**定义工件的group、name 和 version*/
    group = 'com.liwg.eventbus.autoregister'
    archivesBaseName = 'eventbus-autoregister'
    version = '1.0.0'
    
    uploadArchives{ //当前项目可以发布到本地文件夹中
        repositories {
            mavenDeployer {
                repository(url: uri('../repo')) //定义本地maven仓库的地址
            }
        }
    }
    
    

    3、修改src/main/java的目录名改成src/main/groovy

    4、在groovy新建自己的包目录,并新建一个groovy 类,这个类就是插件的入口类

    package com.liwg.plugin.autoregister
    
    import org.gradle.api.Plugin
    import org.gradle.api.Project
    
    class AutoRegisterPlugin implements Plugin<Project> {
    
        @Override
        void apply(Project project) {
            println("插件执行了")
        }
    }
    

    5、新建插件配置文件 /src/main/resources/META-INF/gradle-plugins/com.eventbus.autoregister.properties,文件名就是插件名,引用插件时使用apply plugin: "com.eventbus.autoregister"

    //文件内容,类名改成自己的类名
    implementation-class=com.liwg.plugin.autoregister.AutoRegisterPlugin
    

    6、执行uploadArchives这个gradle任务会在 项目根目录的repo文件夹生成一个本地maven仓库

    7、在项目的gradle文件添加如下配置

    buildscript {
        
        repositories {
            // 设置maven为本地仓库
            maven {
                url "./repo"
            }
            google()
            jcenter()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:3.2.0'
            // 引用我们自己定义的插件
            classpath 'com.liwg.eventbus.autoregister:eventbus-autoregister:1.0.0'
        }
    }
    
    allprojects {
        repositories {
            // 设置maven为本地仓库
            maven {
                url "./repo"
            }
            google()
            jcenter()
        }
    }
    
    task clean(type: Delete) {
        delete rootProject.buildDir
    }
    
    

    8、在 app目录下的gradle文件做如下引用

    apply plugin: 'com.android.application'
    // 引用插件,当我们在运行或者构建时就会执行到我们的插件代码
    apply plugin: "com.eventbus.autoregister"
    
    android {
        compileSdkVersion 28
        defaultConfig {
            applicationId "com.liwg.eventbus.autoregister"
            minSdkVersion 15
            targetSdkVersion 28
            versionCode 1
            versionName "1.0"
            testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
    }
    
    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar'])
    }
    
    

    文章介绍的只是简单创建一个插件工程,更多核心功能主要是学习通过transform配合javassist操作字节码动态注入代码,这部分内容可以参考我另一偏博客

    EventBus自动注册与反注册

    相关文章

      网友评论

          本文标题:Gradle插件开发入门

          本文链接:https://www.haomeiwen.com/subject/inqklqtx.html