一、前言二、在build.gradle中定义插件三、buildSrc代码演示四、参考链接
一、前言在Android中使用自定义Gradle插件能为我们实现一些特定的功能,这里不再进行特定的描述。本文记录下简单的自定义Gradle插件,采用Groovy语言编写。下一篇会给出gradle、kotlin、java编写的例子。
二、在build.gradle中定义插件定义插件最简单的方式莫过于直接在build.gradle中定义。如下:
apply plugin: GreetingPlugin buildscript { repositories { google() mavenCentral() maven { url 'https://jitpack.io' } } dependencies { classpath 'com.android.tools.build:gradle:7.0.4' classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.10' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } task clean(type: Delete) { delete rootProject.buildDir } class GreetingPlugin implements Plugin三、buildSrc代码演示{ void apply(Project project) { project.task('hello') { doLast { println 'Hello from the GreetingPlugin' } } } }
直接在build.gradle中定义虽然比较好,但是随着逻辑扩大,然后逻辑可读性会变差,因此需要将其单独放在一个位置,这里采用buildSrc的方式进行定义
这里采用buildSrc的方式创建插件。首先在项目根目录创建一个buildSrc的文件夹。该文件夹名字不可更改。
首先创建以下目录结构
其中plugin文件夹下面的groovy文件名字可以起任意一个名字。plugin.properties的文件名字可以其任何一个名字。
build.gradle
apply plugin: 'groovy' dependencies { //gradle sdk gradleApi() //groovy sdk localGroovy() }
编写完后build重新构建下程序。该文件夹不需要在setting.gradle文件夹中引用,因为gradle是多项目构建,会自动检索所有包下面的build.gradle文件。重新构建的化可以使接下来编写插件使用代码联想功能。下面完善其它代码
plugin.properties
implementation-class=plugin.ThreePlugin
ThreePlugin.groovy
package plugin import org.gradle.api.Plugin; import org.gradle.api.Project; class ThreePlugin implements Plugin{ @Override void apply(Project project) { println "打印的第一种方式" println '打印的第二种方式' println("打印的第三种方式") System.out.println("打印的第四种方式") } }
在其它位置引用插件,例如build.gradle
// Top-level build file where you can add configuration options common to all sub-projects/modules. //使用plugin.properties中文件名的前缀plugin //apply plugin: 'plugin' //或者implementation-class=plugin.ThreePlugin中的plugin.ThreePlugin apply plugin: plugin.ThreePlugin buildscript { repositories { google() mavenCentral() maven { url 'https://jitpack.io' } } dependencies { classpath 'com.android.tools.build:gradle:7.0.4' classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.10' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } task clean(type: Delete) { delete rootProject.buildDir }
然后重新构建程序,会打印出以下日志
> Configure project : 打印的第一种方式 打印的第二种方式 打印的第三种方式 打印的第四种方式 > Task :app:preBuild UP-TO-DATE四、参考链接
- Android官方提供的自定义Gradle插件示例:
https://github.com/android/gradle-recipes
- 自定义Android Gradle插件
https://blog.csdn.net/binbinqq86/article/details/81033746
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)