Gradle_使用buildSrc方式自定义gradle插件

网上很多介绍android studio使用gradle如何自定义插件,介绍的内容不错,可是按照过程进行实践却踩了不少坑,这篇文章就用来记录一下gradle使用buildSrc的形式创建插件的过程。

Gradle的创建plugin插件,有三种方式:
一,·Build script
简单说就是在构建脚本中(build.gradle),直接创建编写代码。
二,buildSrc project
创建一个buildSrc的项目,存放插件的代码
三,Standalone project
创建一个单独的项目,生成并发布一个包含插件,任务等内容的jar包。

先学习一波理念:https://blog.csdn.net/android_jianbo/article/details/103704459
下面就开始buildSrc的形式进行自定义插件。

buildSrc project

1、工具版本

  • android studio:3.5.1
  • gradle:gradle-4.10.1-all.zip
  • gradle插件:3.0.1

2、在项目工程的根目录下创建buildSrc目录,这个名字不能错,必须是buildSrc。创建完之后,rebuild一下工程,会在buildSrc下生成一些目录。
Gradle_使用buildSrc方式自定义gradle插件_第1张图片
2、在buildSrc目录下创建build.gradle文件,并编写代码

//use java library
apply plugin: 'java-library'
//use groovy library
//apply plugin: 'groovy'
sourceSets {
     
    main{
     
//      groovy{
     
//            srcDir 'src/main/groovy'
//        }
        java{
     
            srcDir 'src/main/java'
        }
        resources {
     
            srcDir 'src/main/resources'
        }
    }
}
  • 使用java来编写插件就引入java库
    apply plugin: 'java-library'
  • 使用groovy来编写插件就引入groovy
    apply plugin: 'groovy'
  • 配置源码地址
    如果使用java就配置srcDir 'src/main/java'
    使用groovy就配置srcDir 'src/main/groovy'
    资源配置:srcDir 'src/main/resources'

3、在buildSrc目录下创建src/main/java目录,之后再创建插件的包名:com.learn.plugin,并编写插件代码:

package com.learn.plugin;
import org.gradle.api.Plugin;
import org.gradle.api.Project;

public class MyPlugin implements Plugin<Project> {
     

    @Override
    public void apply(Project project) {
     
        System.out.println("22222222222222222");
    }
}

注意坑一:开始创建java代码或groovy代码,可能不会识别语法,需要rebuild一下才会识别。

4、在buildSrc目录下创建src/main/resources目录,在resources目录下创建目录META-INF/gradle-plugins目录,最后在该目录下编写插件属性文件com.learn.plugin.properties文件。

  • 这个插件属性文件的命名规则是:名称是创建的插件的包名,然后以.properties后缀结尾。
  • com.learn.plugin.properties文件内容编写插件的全类名:
    implementation-class=com.learn.plugin.MyPlugin

到这插件的创建就基本完成了,下面就是如何使用插件。

5、使用插件
在app模块下的build.gradle中引入插件:apply plugin: 'com.learn.plugin,这里引入的插件明就是插件的包名。

6、测试插件
使用gradle插件的右侧工具,找到应用的编译打包命令进行build。
Gradle_使用buildSrc方式自定义gradle插件_第2张图片
可以在控制台看到输出内容
Gradle_使用buildSrc方式自定义gradle插件_第3张图片
注意坑二:如果我修改了插件中的代码,再测试的时候会报错。比如修改插件代码:

public class MyPlugin implements Plugin<Project> {
     
    @Override
    public void apply(Project project) {
     
        System.out.println("11111111111111");
    }
}

再进行assembleDebug的时候报错:
在这里插入图片描述
这是引入每次修改完插件内容,需要重新编译一下,首先删除buildSrc目录下的build目录,再进行assembleDebug,此时就不会报错了。
Gradle_使用buildSrc方式自定义gradle插件_第4张图片
编写的demo工程在GitHub上,需要的可以自己去拿:https://github.com/RenZhongrui/android-learn/tree/master/007_android_gradle_plugin_buildSrc

你可能感兴趣的:(Gradle,自定义gradle插件,gradle)