栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Gradle插件编写(二)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Gradle插件编写(二)

文章目录

一、前言二、在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 {
    void apply(Project project) {

        project.task('hello') {
            doLast {
                println 'Hello from the GreetingPlugin'
            }
        }
    }
}
三、buildSrc代码演示

直接在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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/709540.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号