美文网首页
Android Gradle之自定义Gradle Plugin

Android Gradle之自定义Gradle Plugin

作者: cwzqf | 来源:发表于2021-01-10 00:42 被阅读0次

           Android自定义plugin有三种方法,本文只记录自定义的plugin作为独立项目,主要分为以下六个步骤

    1.首先新建java/kotlin library这个module,作为我们此次要自定义的plugin,build.gradle文件如下
    plugins {
        id 'java-library'
        id 'kotlin'
        id 'maven'   //本文用到maven本地仓库来管理plugin
    }
    
    java {
        sourceCompatibility = JavaVersion.VERSION_1_7
        targetCompatibility = JavaVersion.VERSION_1_7
    }
    
    dependencies {
        implementation gradleApi()   //使用到gradle包里的方法进行自定义plugin
    }
    
    //上传plugin到本地maven仓库
    uploadArchives{
        repositories {
            mavenDeployer {
                repository(url: uri(rootProject.ext.maven_dir))
                pom.groupId = 'com.kunsan.plugin'
                pom.artifactId = 'myplugin'
                pom.version = '1.0.0'
            }
        }
    }
    
    2.创建我们要自定义的plugin,实现gradle的Plugin接口
    import org.gradle.api.Plugin
    import org.gradle.api.Project
    
    class MyPlugin :Plugin<Project>{
        override fun apply(target: Project) {
            println("-----加载插件-----")
        }
    }
    
    3.创建properties文件

    作为外部依赖我们的plugin的导向标,properties文件的名称就是到时候apply plugin的名称,比如,这边我命名成com.kunsan.plugin.properties,外部要引用我们插件,就是通过apply plugin 'com.kunsan.plugin',然后properties文件的内容如下:

    implementation-class=com.kunsan.plugin.MyPlugin

    就是第二部创建的MyPlugin的具体路径

    4.配置项目plugin引用

    以上三个步骤已经把我们自定义plugin就绪,可以提供外部使用的工作都做好了,接下里看下外部怎么使用我们的plugin,在项目级的build.gradle文件中,如下:

    apply from: "config.gradle"
    
    buildscript {
        ext.kotlin_version = "1.4.21"
        ext.maven_dir = 'file://H://CustomPlugin/repo'    
        repositories {
            google()
            jcenter()
            maven { url maven_dir }      //依赖本地maven仓库的地址
        }
        dependencies {
            classpath "com.android.tools.build:gradle:4.0.1"
            classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
            //步骤1中的本地maven配置 groupId+artifactId+version 注意groupId和artifactId以冒号隔开
            classpath 'com.kunsan.plugin:myplugin:1.0.0'     
        }
    }
    
    allprojects {
        repositories {
            google()
            jcenter()
            maven { url maven_dir }
        }
    }
    
    task clean(type: Delete) {
        delete rootProject.buildDir
    }
    
    5.指定模块引用plugin

           现在我们假设在app模块引入这个插件:build.gradle

    plugins {
        id 'com.android.application'
        id 'kotlin-android'
        id 'com.kunsan.plugin'    //plugin名称就是步骤2说的properties文件的名称
    }
    
    8.上传plugin

           至此,我们也依赖了自定义的plugin,但是如果此时你直接syns,会报错找不到plugin id,因为此时我们还没有将插件上传到本地maven中,步骤1我们定义了上传方法uploadArchives,双击该脚本命令将plugin上传(注意每次修改MyPlugin的代码,都需要上传一次更新)

    gradle
    以上就是一次完整的自定义plugin过程,过程还是很简单的,接下来一篇文章会实践真正有实际意义的plugin。

    相关文章

      网友评论

          本文标题:Android Gradle之自定义Gradle Plugin

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