美文网首页
Gradle插件<第一篇>:自定义插件

Gradle插件<第一篇>:自定义插件

作者: NoBugException | 来源:发表于2021-08-03 21:59 被阅读0次

[第一步] 使用Android Studio新建一个项目, 命名为PluginDemo

[第二步] 新建一个模块

可选择的模块类型是:Phone & Tablet Module 或者 Android Library,命名为plugindemo

[第三步] 删除plugindemo模块中多余的文件

只保留 src/mainbuild.gradle

图片.png

[第四步] 在main目录下新建groovy文件夹和resources文件夹

groovy文件夹中新建包名com.nobug.plugintest
resources文件夹中新建META-INF,在META-INF文件夹中新建gradle-plugins

图片.png

[第五步] 定义插件

com.nobug.plugintest下新建插件类

package com.nobug.plugintest;

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

/**
 * 插件测试
 */
public class PluginTest implements Plugin<Project> {

    @Override
    public void apply(Project project) {

        def log = project.logger;
        log.error("test11111111111111111");

    }
}

目录结构如下:

图片.png

[第六步] 在gradle-plugins中添加配置文件

gradle-plugins目录下,新建配置文件com.plugin.test.properties

此配置文件的格式是.propertiescom.plugin.test 表示插件名称,工程中自带的插件

apply plugin: 'com.android.application'

com.android.application就是插件名称。

配置文件的目录结构如下:

图片.png

在配置文件中执行插件的路径:

implementation-class=com.nobug.plugintest.PluginTest
图片.png

[第七步] 编写build.gradle

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

dependencies {
    implementation gradleApi()
    implementation localGroovy()
}

repositories {
    mavenCentral()
}


uploadArchives {
    repositories {
        mavenDeployer {
            pom.groupId = 'com.nobug'
            pom.artifactId = 'plugintest'
            pom.version = 1.0
            // maven本地仓库的目录
            repository(url: uri('../PluginTest'))
        }
    }
}

uploadArchives 以上代码为固定代码, uploadArchives 中的代码根据需求而定,其中url指定了maven的远程仓库或者本地仓库,本例中以本地仓为例, “../” 的意思是项目的根目录。

[第八步] 上传插件

图片.png

在gradle tasks中找到uploadArchives task, 双击执行它,将插件上传到“../PluginTest”中,之后就会在项目的根目录中九可以找到对应的插件(上传插件之前别忘了先clean下),如图:

图片.png

注意插件的路径,插件的路径为com.nobug.plugintest.1.0,就是在build.gradle中定义的:

        pom.groupId = 'com.nobug'
        pom.artifactId = 'plugintest'
        pom.version = 1.0

将groupId、artifactId、version拼接在一起。

[第九步] 在项目根目录下配置插件

在项目的根目录指定插件目录

        // 指定插件的maven目录
        maven{url uri('PluginTest')}

以及添加插件的依赖:

        classpath "com.nobug:plugintest:1.0"

完成的配置代码是:

buildscript {
    repositories {

        // 指定插件的maven目录
        maven{url uri('PluginTest')}

        google()
        jcenter()
    }
    dependencies {
        classpath "com.android.tools.build:gradle:4.0.2"
        classpath "com.nobug:plugintest:1.0"
    }
}

[第十步] 应用插件

在其它模块中,应用该插件:

apply plugin: 'com.plugin.test'

此时,一个完整的自定义插件已经做好了。

当打包的时候,可以在Gradle日志中看到打印的日志:

图片.png

最后,贴上Github地址:

Github地址:https://github.com/NoBugException/PluginDemo

[本章完...]

相关文章

  • Gradle插件<第四篇>:Gradle 7.0配置

    本章节是Gradle插件<第一篇>:自定义插件[https://www.jianshu.com/p/90006d9...

  • 自定义Gradle插件

    个人博客http://www.milovetingting.cn 自定义Gradle插件 自定义Gradle插件可...

  • Gradle自定义插件

    Gradle自定义插件 在Gradle中创建自定义插件,Gradle提供了三种方式: 在build.gradle脚...

  • 启用Gradle远程调试

    在Gradle学习10——自定义Gradle插件 这篇文章中介绍了编写插件的几种方式。编写gradle对象插件的实...

  • gradle插件调试

    在Gradle学习10——自定义Gradle插件 这篇文章中介绍了编写插件的几种方式。编写gradle对象插件的实...

  • Android Gradle 插件(二)

    Android Gradle 插件(一)Android Plugin DSL Reference 自定义插件 新建...

  • Gradle自定义插件(Android)

    Gradle插件使用在日常开发中已经很熟悉,那么我们怎么去自定义我们的插件? 自定义插件 自定义插件基于源码放置可...

  • Gradle 插件

    比如一个自动输出Lint报告的Gradle插件1.自定义Gradle插件的方式Gradle是采用Groovy语言,...

  • Gradle自定义插件和发布

    Gradle自定义插件和发布 这篇文章讲解的是如何自定义gradle插件,并以本地依赖和远程依赖的方式来集成。 本...

  • Android Gradle入门到精通(二)

    1.背景 上节学完了Gradle的基础知识,这节学习下Gradle的自定义插件。自定义插件主要分为三种方式: 新建...

网友评论

      本文标题:Gradle插件<第一篇>:自定义插件

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