自定义Gradle插件流程

作者: enjoy_coding | 来源:发表于2020-11-29 10:04 被阅读0次

    android自定义Gradle插件流程记录如下(当然参考了书籍和网上的资料):

    第一步:新建android module

    新建项目名字随意例如:customPlugin,然后选择把新建的customPlugin项目中src/main目录下的文件全部删除,然后新建groovy和resources目录,其中groovy用来书写我们的逻辑代码,resources目录用来保存plugin的配置信息

    第二步:构建plugin的配置信息

    resources目录下按照格式新建META-INF目录,在META-INF目录中新建gradle-plugins目录,然后新建插件名称.properties文件。具体格式如下:resources/META-INF/gradle-plugins/插件名称.properties文件。其中除了插件名称是自定义的其他都是固定格式。

    第三步:构建plugin的操作类

    在groovy目录下新建包名(自定义路径)然后新建TestPlugin 的groovy文件(当然Java也是可以的,只是groovy语法相对灵活;Java就要写在Java目录下了)例如:

    class TestPlugin implements Plugin<Project> {
        @Override
        void apply(Project target) {
            println("----Plugin apply run --------------")
        }
    }
    

    第四步:让TestPlugin文件生效

    在第二步配置的文件(resources/META-INF/gradle-plugins/插件名称.properties文件)中添加:implementation-class=自定义包名.TestPlugin。
    经过以上四步一个自定义的Gradle插件就算完成了(虽然这个插件没毛用),但是想要在项目中配置使用还需要发布出去才能用,接下来介绍发布插件,这里主要介绍发布到本地使用。

    发布插件到本地的流程

    1,首先要用AndroidStudio下载mavenDeployer插件,并重启AndroidStudio。
    2,在插件的build.gradle文件中添加如下信息:
    plugins {
        id 'groovy'
        id 'maven'
    }
    或者
    apply plugins: 'groovy'
     apply plugins: 'maven'
    
    repositories {
        jcenter()
        google()
        mavenCentral()
    }
    
    dependencies {
        implementation gradleApi()
        implementation localGroovy()
    }
    
    
    uploadArchives{
        repositories.mavenDeployer{
            repository(url: uri('../repo'))//本地文件路径
            pom.groupId = '插件名称'//插件的名称需要和resources/META-INF/gradle-plugins/插件名称.properties文件名称一致,否则会导致引用出问题,可以自定义
            pom.artifactId = 'artifactId'//artifactId 自定义,在引用的时候要用到
            pom.version = '1.0.0'//插件版本号
        }
    }
    

    这样就可以把maven设置到本地仓库了。

    3,执行uploadArchives命令生成repo目录

    这个可以用命令行:Windows 用gradlew uploadArchives mac:./gradlew uploadArchives
    还可以点击AndroidStudio的task生成如图:


    uploadArchives 示意图.jpg

    完成以上操作我们就把插件发布到本地maven仓库了。

    4,接下来就是项目引入了

    首先在项目的跟目录下操作build.gradle文件,如下所示:

    // Top-level build file where you can add configuration options common to all sub-projects/modules.
    buildscript {
        ext.kotlin_version = "1.3.72"
        repositories {
            google()
            jcenter()
            maven{//这个是本地仓库的目录
                url uri('repo')
            }
        }
        dependencies {
            classpath "com.android.tools.build:gradle:4.1.1"
            classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
            classpath "插件名称:插件artifactId :1.0.0"//这个就是上面uploadArchives配置的: pom.groupId:pom.artifactId:pom.version
    
            // NOTE: Do not place your application dependencies here; they belong
            // in the individual module build.gradle files
        }
    }
    
    allprojects {
        repositories {
            google()
            jcenter()
        }
    }
    
    task clean(type: Delete) {
        delete rootProject.buildDir
    }
    

    最后一步就是在项目中的build.gradle中添加

    plugins {
        id '插件名称'
    }
    或者
    apply plugin:'插件名称'
    

    到这一步整个自定义插件就算完成功能了(这些都是固定格式,只要稍微注意就行,重点是插件内容的实现)。

    相关文章

      网友评论

        本文标题:自定义Gradle插件流程

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