美文网首页
Gradle自定义plugin基础

Gradle自定义plugin基础

作者: 许方镇 | 来源:发表于2019-10-24 17:22 被阅读0次

前言

gradle 插件在一个android工程中用到的不多,但是很多高级的玩法都用到了,
这里写个demo总结并传到github上,希望对大家有帮助。

1. 自定义插件并上传

  1. 新建一个demo工程(随意命名,本文中命名为FirstPlugin (源码下载)
  2. 创建一个library module(随意命名,本文中命名为print)
  3. 除了src/main/java 目录和 build.gradle外,其他文件都删除
  4. build.gradle内容如下,其中插件上传的maven地址需要根据实际情况修改
apply plugin: 'groovy'
apply plugin: 'maven'

dependencies {
    compile gradleApi()
    compile 'com.android.tools.build:gradle:3.1.3'
}

repositories {
    mavenCentral()
}

//group和version在后面使用自定义插件的时候会用到
group = 'com.xfz.plugin'
version = '1.0.0'

uploadArchives {
    repositories {
        mavenDeployer {
            //提交到远程服务器:
            // repository(url: "http://www.xxx.com/repos") {
            //    authentication(userName: "admin", password: "admin")
            // }
            //mac下默认的本地的Maven地址
            repository(url: "file:///Users/xufangzhen/.m2/repository")
        }
    }
}
  1. new一个java插件类(随意命名,本文中命名为PrintPlugin.java),
    实现Plugin类,在apply方法中随意打印字符串
package com.xfz.plugin;

import org.gradle.api.Plugin;
import org.gradle.api.Project;

public class PrintPlugin implements Plugin<Project> {
    @Override
    public void apply(Project project) {
        System.out.println("first gradle plugin ==============");
    }
}

  1. 在main目录下再创建resources/META-INF/gradle-plugins目录,在gradle-plugins目录下创建properties文件(随意命名,本文命名first.print.properties),在该文件里写上刚才的java实现类
implementation-class=com.xfz.plugin.PrintPlugin

sync项目后,最终目录如下


image.png

6.执行task,上传自己的插件

./gradlew uploadArchives

其他说明

  1. 如果使用groovy写插件代码,需要把java文件夹改成groovy。
  2. 如果是插件所在的项目依赖插件,则不需要写properties文件,但是module名需要改成BuildSrc。
  3. 初学者容易写错文件或者文件夹名字,注意排查。
  4. 确保maven环境环境正确配置,路径正确。

2. 使用自定义插件

  1. 新建一个demo工程(随意命名,本文中命名为UsePlugin (源码下载)
  2. 在app目录的build.gradle文件里配置下即可
buildscript {
    repositories {
        google()
        jcenter()
        maven {
            //Maven仓库地址
            url "file:///Users/xufangzhen/.m2/repository"
        }
    }
    dependencies {
        //groupo:module:version
        classpath 'com.xfz.plugin:print:1.0.0'
    }
}
//first.print为resources/META-INF/gradle-plugins下的properties文件名称
apply plugin: 'first.print'
  1. clean后发现可以打印出:first gradle plugin ==============
./gradlew clean

3. 自定义插件给当前工程使用

给当前工程使用就不需要上传和resources,非常简单,需要module名为BuildSrc


image.png

另外build.gradle如下

apply plugin: 'groovy'

dependencies {
    compile gradleApi()
}

repositories {
    jcenter()
}

在主app的build.gradle中添加

//注意没有引号
apply plugin: com.xfz.print.LocalPrint 

相关文章

网友评论

      本文标题:Gradle自定义plugin基础

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