自定义gradle插件

前言

在Android studio中,使用gradle进行编译、打包,在一些情况下,学会自定义gradle插件,会帮我们解决很多问题。gradle插件是由groovy语言开发的,所以在自定义插件时,需要用到groovy语法(类似Java语法),本文只作为demo使用,想进一步学习groovy,可在精通 Groovy学习。

一、新建gradle插件发布至maven

  1. 新建Android项目

  2. 新建一个Android module项目,类型选择Android library

  3. 将新建的module中除build.gradle文件外的的其余文件全部删除,然后删除build.gradle的内容全部删除

  4. 在新建的module中新建文件夹目录src.main.groovy和src.main.resources。groovy文件夹被识别为groovy源码目录,在其目录下新建包名,类似java。resources文件夹被识别为资源文件夹,在其目录下新建META-INF.gradle-plugins文件夹。

  5. 在新建的module中的build.gradle中添加(发布至本地maven库)

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

    dependencies {
     compile gradleApi() //gradle sdk
     compile localGroovy() //groovy sdk
    }

    repositories {
      mavenCentral()
    }

    group='com.jian.plugin'
    version='1.0.0'

    uploadArchives {
    repositories {
      mavenDeployer {
        //提交到远程服务器:
        // repository(url: "http://www.xxx.com/repos") {
        //    authentication(userName: "admin", password: "admin")
        // }
        repository(url: uri('../repo’))  //本地maven库地址
       }
      }
    }
  1. 在新建module,groovy包目录下,新建一个文件,命名为PluginImpl.groovy

     package com.jian.plugin
    
     import org.gradle.api.Plugin
     import org.gradle.api.Project
    
     public class PluginImpl implements Plugin<Project>{
    
         @Override
         void apply(Project project) {
             System.out.println "======================="
             System.out.println "Hello gradle plugin"
             System.out.println "======================="
         }
     }
    
  2. 在新建module,researches/META-INF/gradle-plugins目录下新建一个properties文件,命名为plugin.test.properties,在里面输入

     implementation-class=com.jian.plugin.PluginImpl
    
  3. 点击Androidstudio右侧的gradle工具,
    双击uploadArchives,打包上传至本地maven库地址(../repo),即生成如下文件
    repo下的文件目录由build.gradle中的group生成,1.0.0由version生成

  4. 使用,在app下build.gradle 中添加如下代码

     buildscript {
         repositories {
             maven {
          //本地Maven仓库地址
                 url uri('../repo')
             }
         }
         dependencies {
         //格式为-->group:module:version
             classpath 'com.jian.plugin:mylibrary:1.0.0'
         }
     }
     //plugin.test为resources/META-INF/gradle-plugins下的properties文件名称
     apply plugin: ‘plugin.test'
    

clean project 然后make project,从messages窗口中看到如下打印信息

好了,hello world版的自定义Androidstudio插件运行成功!

二、新建本地gradle插件

  1. 新建Android项目

  2. 新建一个Android module项目,命名为buildsrc,类型选择Android library

  3. 将新建的module中除build.gradle文件外的的其余文件全部删除,然后删除build.gradle的内容全部删除

  4. 在新建的module中新建文件夹目录src.main.groovy

  5. 在新建的buildsrc中的build.gradle中添加

     apply plugin: 'groovy'
     
     dependencies {
         compile gradleApi()//gradle sdk
         compile localGroovy()//groovy sdk
     
         compile 'com.android.tools.build:gradle:3.0.1'
     
         compile 'org.ow2.asm:asm:5.1'
         compile 'org.ow2.asm:asm-commons:5.1'
     }
     
     repositories {
         jcenter()
         google()
     }
    
  6. 在新建module,groovy包目录下,新建一个文件,命名为TestPlugin.groovy

     package com.liujian
     
     import org.gradle.api.Plugin
     import org.gradle.api.Project
     
     public class TestPlugin implements Plugin<Project>{
     
         @Override
         void apply(Project project) {
             System.out.println("========================")
             System.out.println("这是第TestPlugin插件!")
         }
     }
    
  7. 使用,在app下build.gradle 中添加如下代码

     apply plugin: com.liujian.TestPlugin
    

然后make project,从messages窗口中看到如下打印信息

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容