创建插件工程

创建项目

  1. 根目录创建 buildSrc 文件夹,在文件夹内创建 build.gradle 文件,添加配置信息,然后构建。

    buildSrc/build.gradle

    // 引用 groovy 插件,编译插件工程中的代码
    apply plugin: 'groovy'
    
    // 声明仓库地址
    repositories {
        jcenter()
    }
    
    // 声明依赖的包
    dependencies {
        implementation gradleApi()
        implementation localGroovy()
    }
    
  2. 新建 src/main 源码目录,创建 com.imooc.router.gradle 包,在包内创建自定义插件 RouterPlugin。

    package com.imooc.router.gradle
    import org.gradle.api.Plugin
    import org.gradle.api.Project
    
    class RouterPlugin implements Plugin<Project> {
    
        /**
         * 实现 apply 方法,注入插件的逻辑
         * @param project
         */
        @Override
        void apply(Project project) {
    
        }
    }
    
    
  3. resources 配置文件目录,在目录下创建 META-INF\gradle-plugins 目录,然后创建 com.imooc.router.properties 配置文件,用于配置插件信息。
    在这里插入图片描述

    com.imooc.router.properties​​​

    implementation-class=com.imooc.router.gradle.RouterPlugin
    
  4. 自定义插件属性

    RouterExtension.groovy

    class RouterExtension {
        String wikiDir
    }
    
  5. 配置插件属性

    RouterPlugin.groovy

    class RouterPlugin implements Plugin<Project> {
        /**
         * 实现 apply 方法,注入插件的逻辑
         * @param project
         */
        @Override
        void apply(Project project) {
    
            // 为自定义插件添加扩展参数
            project.getExtensions().create('router',RouterExtension)
    
        }
    }
    
    

发布插件

  1. 插件工程配置 maven 信息

    buildSrc/build.gradle

    // 调用maven插件,用于发布
    	apply plugin: 'maven'
    	
    	uploadArchives {
    	    repositories {
    	        mavenDeployer  {
    	            // 设置发布路径 工程根目录下面的 repo 文件夹
    	            repository(url:uri('../repo')) {
    	                // 设置groupId,通常为包名
    	                pom.groupId = 'com.imooc.router'
    	                // 设置 artifactId 为当前插件的名称
    	                pom.artifactId = 'router-gradle-plugin'
    	                // 设置 插件的版本号
    	                pom.version = '1.0.0'
    	            }
    	        }
    	    }
    	}
    
  2. 将插件源码复制到新的工程

    cp -rf buildSrc router-gradle-plugin
    
  3. 在 settings.gradle 引入插件工程

    include ':app',':router-gradle-plugin'
    rootProject.name = "pluginPro"
    
  4. 发布到本地maven

     gradle :router-gradle-plugin:uploadArchives
    

    在这里插入图片描述

使用插件

  1. 声明插件依赖

    工程 build.gradle

    buildscript {
        repositories {
            // 1.配置Maven 仓库地址 可以使相对地址,也可使是绝对路径
            maven {
                url uri('D:\\Users\\lihl\\android\\pluginPro\\repo')
            }
            google()
            jcenter()
        }
        dependencies {
            classpath "com.android.tools.build:gradle:4.1.1"
            // 2.声明依赖的插件
            classpath "com.imooc.router:router-gradle-plugin:1.0.0"
            // NOTE: Do not place your application dependencies here; they belong
            // in the individual module build.gradle files
        }
    }
    
  2. 引入插件

    app/build.gradle

    plugins {
        id 'com.android.application'
        id 'com.imooc.router' // 3.应用自定义插件
    }
    // 4. 向路由插件传递参数
    router {
        wikiDir getRootDir().absolutePath
    }
    
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值