Gradle学习三 :AS自定义Gradle插件

2023-05-16

一、定义插件

1.File-New Module-Android Library,取名plugin1

2.删除plugin1目录下所有文件,只保留build.gradle

编写build.gradle,代码如下:

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

dependencies {
    compile gradleApi()//gradle sdk
    compile localGroovy()//groovy sdk
    compile 'com.android.tools.build:gradle:3.2.1'
}

repositories {
    mavenCentral()
}

3.编写插件代码:

<1>在plugin目录下新建Directory,命名src,在src下新建Directory命名main,在main下新建Directory命名groovy。此后groovy目录新建的groovy后缀文件将被默认为插件源码。

<2>在groovy目录新建package,命名com.zhp.plugin

<3>在包com.zhp.plugin下新建file,后缀.groovy,命名Plugin1,代码如下:

package com.zhp.plugin

import org.gradle.api.Plugin
import org.gradle.api.Project
import com.android.build.gradle.AppExtension
class Plugin1 implements Plugin<Project> {

    void apply(Project project) {
    	//在控制台打印一段文字,grrovy语法
        println "this is first gradle plugins"
        //在控制台打印一段文字,java语法。groovy是基于java扩展并完全兼容java语言。
        System.out.println("this is first gradle plugins too");
    }
}

关于groovy如何基于java语言扩展并且和java无缝混合开发,请参考文档

<4>在src/main目录下新建Directory命名为resources,在resources目录下新建Directory命名为META-INF,在META-INF目录下新建Directory命名为gradle-plugins,最后在gradle-plugins目录下新建file,命名为com.zhp.plugin.properties,文件内容:

implementation-class=com.zhp.plugin.Plugin1//指向src/main/groovy/com/zhp/plugin/Plugin1这个插件实现

二、发布插件

在plugin目录下的build.gradle文件加入如下代码:

group='com.zhp.plugin'
version='1.0.0'

uploadArchives {
    repositories {
        mavenDeployer {
            //提交到远程服务器:
            // repository(url: "http://www.xxx.com/repos") {
            //    authentication(userName: "admin", password: "admin")
            // }
            //提交到本地磁盘
            repository(url: uri('D:/maven_local'))
        }
    }
}

点击AS右侧Gradle按钮,展示了当前工程包含的所有gradle插件,其中就有刚才新建的plugin1,如下图所示:

在这里插入图片描述

点击uploadArchives,运行结果如下:

this is first gradle plugins
this is first gradle plugins too
:plugin1:compileJava NO-SOURCE
:plugin1:compileGroovy UP-TO-DATE
:plugin1:processResources UP-TO-DATE
:plugin1:classes UP-TO-DATE
:plugin1:jar UP-TO-DATE
:plugin1:uploadArchives

BUILD SUCCESSFUL in 1s
4 actionable tasks: 1 executed, 3 up-to-date
9:43:46: Task execution finished 'uploadArchives'.

查看本地磁盘,在d盘生成了maven_local,以后其他工程可以使用这个plugin插件。

在这里插入图片描述

三、使用插件

<1>在build.gradle的文件开始声明要应用的插件名称

apply plugin: 'com.zhp.plugin'//:后面的是插件的group名称。

<2>声明插件所在的地址,比如我们声明的插件是发布在本地磁盘d盘;同时声明对指定插件的依赖。

buildscript {
    repositories {
        mavenCentral()
        maven {
            url uri('D:/maven_local')
        }
    }
    dependencies {
        classpath 'com.zhp.plugin:plugin1:1.0.0'//group:name:version
    }
}

四、案例

<1>功能:通过javaassist为每一个构造方法增加一行日志,关于javaassist的使用可以参考

<2>代码地址

五、参考

[https://github.com/zhhp1121/GradlePlugin]
[https://blog.csdn.net/rambomatrix/article/details/78602614]
[http://www.blogjava.net/johnnyjian/archive/2011/04/26/349042.html]
[https://www.imooc.com/article/44169]

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Gradle学习三 :AS自定义Gradle插件 的相关文章

  • ccf 炉石传说

    import java util ArrayList import java util Scanner span class hljs comment date 9 11 17 author chaomaer span span class
  • python之paramiko文件夹远程上传

    Paramiko模块是一个用来连接远程服务器 xff0c 进行文件上传下载和shell命令执行的PYTHON模块 xff0c 使用方便 但是它不支持整个文件夹的上传 xff0c 近期需要分发上传一个离线工具包到服务器去执行 xff0c 考虑
  • form表单提交后,页面弹出成功或者失败的信息

    Ssm 中用RedirectAttributes做提示消息 96 span class token annotation punctuation 64 RequiresPermissions span span class token pu
  • Oracle提示表空间不足ORA-01653:

    这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题 xff0c 有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中 居左 居右SmartyP
  • 递归删除树节点

    public int delete Long id 删除权限的集合ids List lt Long gt ids 61 new ArrayList lt gt ids add id 递归的将一级分类下的id也加入到集合中 this getI
  • 解决报错:sufficient buffer space or because a queue was full

    An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was
  • java判断字符串(含中文)的内容相似度

    span class token comment 判断地址相似 此处简单的判断字符串的内容80 相似即可 64 param str1 64 param str2 64 return span span class token keyword
  • display:table-cell实现两栏自适应布局

    前面介绍了 float实现两栏自适应布局 float 43 overflow实现两栏自适应布局 xff0c 现在看下table如何实现两栏自适应布局 display table cell lt table gt lt table gt 里的
  • Microsoft Visual C++ 14.0 is required.

    Microsoft Visual C 43 43 14 0 is required Get it with Microsoft Visual C 43 43 Build Tools 当我们安装绝大部分python包的时候可以通过pip in
  • ubuntu20.04离线安装rabbitvcs

    在内网开发的时候 xff0c 管理更新代码非常不方便 xff0c 使用svn是非常普遍的现象 小乌龟svn貌似只有windows版本的 xff0c 在linux系统下与其操作接近的软件rabbitcvs变成了最好的选择 在线安装rabbit
  • 实机安装CentOS7.9操作系统图文(保姆级)教程

    一 制作启动U盘 1 下载Ventoy软件 去Ventoy官网下载Ventoy软件 xff08 Download Ventoy xff09 如下图界面 2 制作启动盘 选择合适的版本以及平台下载好之后 xff0c 进行解压 xff0c 解压
  • Angular8升级至Angular13遇到的问题

    根据项目需求 xff0c 需要把Angular版本从8升级到13 xff0c 无法从8直接升至13 xff0c 需要一级一级的升级 xff0c 本文介绍了在升级Angular版本的时候的一种报错和解决办法 一 开始之前 首先确保你 Node
  • mysql怎么查询表的大小

    通过sql语句查询整个数据库的容量 xff0c 或是单独查看表所占容量 1 要查询表所占的容量 xff0c 就是把表的数据和索引加起来就可以了 1 select sum DATA LENGTH 43 sum INDEX LENGTH fro
  • CEF3 C++接口实现自定义浏览器[simple version]

    目录 目录 1 一 工具准备 2 二 编译C 43 43 接口 2 三 实现浏览器 5 浏览器定制 5 浏览器默认最大化 xff0c 标题从配置文件读取 5 设置浏览器中文环境 xff0c 开启npapi插件功能 xff0c 并注册身份证阅
  • Windows笔记本声音无法找到输出设备

    现象 xff1a 扬声器无法正常工作 xff0c 声音选项提示无法找到输出设备 xff0c 设备管理器的音频输入和输出的声卡文件旁边有黄色的感叹号 xff0c 属性详情里面设备状态提示 xff1a 该设备无法启动 xff08 代码10 xf
  • C++扑克牌发牌

    自动发扑克牌 52张牌无大小王随机发给4个玩家 poker cpp 自动发扑克牌 52张牌无大小王随机发给4个 loaction src poker cpp include lt assert h gt include lt iostrea
  • ArchLinux下i3wm简单配置和美化

    先show下自己配置的截图 简单弄了下 xff0c 凑合用 本文默认你已经安装了基本的archlinux系统 xff0c 只是没有配置桌面环境 所以跳过前面archlinux的基础安装过程 ArchLinux的具体安装请参见我的博客 htt
  • CentOS8下编译配置nginx+rtmp,搭建推流服务器

    一 环境 服务器操作系统 xff1a CentOS Linux release 8 2 2004 Core nginx 版本 https nginx org download nginx 1 18 0 tar gz RMTP模块 xff1a
  • CentOS7网络配置(ping不同的原因及解决方法)

    这是配置好的CentOS7 xff0c 刚开始在Vmware里装CentOS7后是没有ip的 xff0c 原因是CentOS7默认不启动网卡的 xff0c 网卡不启用还ping个毛 进入 etc sysconfig network scip
  • SpringBoot-JPA进行多表连接查询

    通过JPA进行简单的 内 连接查询 1 准备 1 1开发工具Intellij Idea 1 2数据库mysql 1 3新建Spring Initializr项目 xff0c 勾选web mysql rest jpa依赖 2 开始 2 1项目

随机推荐

  • 响应式导航栏-利用纯css实现

    思路 xff1a 当屏幕为移动设备时 xff0c 隐藏导航栏列表项目 xff0c 显示菜单按钮 给菜单按钮 xff08 电脑时隐藏 xff09 加入hover 或者checked选择器实现 xff0c 当hover或者checked的触发时
  • BTRFS文件系统安装ArchLinux

    layout post title BTRFS文件系统安装ArchLinux date 2017 10 02 categories Linux 主要为以下步骤 xff1a 1 下载ArchLinux安装镜像并 制作U盘启动工具 2 开机进入
  • JSP文件上传

    JSP文件上传 网上的方法几乎都是使用的org apache commons fileupload的jar包 xff0c 需要手动下载导入commons fileupload jar和commons io jar 其实tomcat自带的or
  • ORPALIS PDF Reducer Pro(免费pdf压缩器工具)官方正式版V4.0.1 | pdf免费压缩软下载 | 怎样将pdf压缩得很小?

    ORPALIS PDF Reducer Pro 是一款优秀实用的离线单机版pdf免费压缩软件 xff0c 也就是大家说的免费pdf压缩器工具 xff0c 内置多种超高压缩比的PDF压缩算法和创新的页面布局分析以及自动颜色检测机制 xff0c
  • ubuntu系统文件夹作用

    opt 文件夹 用户级的程序目录 xff0c 可以理解为D Software xff0c opt有可选的意思 xff0c 这里可以用于放置第三方大型软件 xff08 或游戏 xff09 xff0c 当你不需要时 xff0c 直接rm rf掉
  • rhel7安装GUI

    check the rank of starting system systenmctl get default not found startx 查看光盘是否挂载 df 挂载 yum mount dev sr0 mnt mount dev
  • org-mode Properties-and-Columns翻译

    https orgmode org manual Properties and Columns html Properties and Columns 文章目录 属性属性语法特殊属性属性查询属性继承 Column View 列视图定义列列定
  • python利用ffmpeg进行rtmp推流直播

    思路 xff1a opencv读取视频 gt 将视频分割为帧 gt 将每一帧进行需求加工后 gt 将此帧写入pipe管道 gt 利用ffmpeg进行推流直播 pipe管道 xff1a 啥是pipe管道 xff1f 粗略的理解就是一个放共享文
  • 电脑环境PCL配置及VS2019环境配置

    VS2019配置pcl 1 12 0 前言 对于 3D 点云处理来说 xff0c PCL 完全是一个的模块化的现代 C 43 43 模板库 其基于以下第三方库 xff1a Boost Eigen FLANN VTK CUDA OpenNI
  • java算法--兔子繁殖问题

    java算法 兔子繁殖问题 题目 xff1a 古典问题 xff1a 有一对兔子 xff0c 从出生后第 3 个月起每个月都生一对兔子 xff0c 小兔子长到第四 个月后每个月又生一对兔子 xff0c 假如兔子都不死 xff0c 问每个月的兔
  • Linux配置Wifi模块

    linux终端无线网卡连接wifi xff1a 扫描可用连接wifi nmcli dev wifi 添加一个wifi的连接 nmcli dev wifi con 无线网络名称 password 无线网络密码 name 任意连接名称 xff0
  • Paho MQTT 嵌入式c客户端研究笔记

    最近做物联网设备 xff0c 需求长连接推送功能 当前物联网有一个标准协议是MQTT xff0c 对应有很多开源服务端 xff0c 如何快速接入这个服务呢 有两种接入方案 xff1a 1 自己clone 代码修改维护 2 找第三方服务 xf
  • Paho MQTT 嵌入式c客户端研究笔记 (二)

    paho mqtt embedded c master MQTTPacket samples xff0c 这个目录里面封装了发布消息 订阅消息的示例 运行pub0sub1 xff0c 这个示例里面会去订阅主题消息 发布主题消息 并且订阅和发
  • Android App 架构设计

    简介 本文是对谷歌原生文档的翻译 xff0c 仅供学习参照 原文链接 此文档写给希望学习最优编程实践和架构以开发健壮 高质量APP的开发者 开发者常遇到的问题 传统的桌面程序大多数使用场景是有一个启动入口 xff0c 作为一个独立进程运行
  • Linux Ubuntu 18.04 换源

    在安装好Ubuntu后 xff0c 你会发现软件下载安装速度非常慢 xff0c 甚至会出错 xff0c 因为Ubuntu官方的源在国内访问的速度非常慢 xff0c 但是我们可以更改系统的源为国内的一些源来提高速度 xff08 国内各大网站的
  • gradle学习二 利用javassist api修改class字节码

    一 前言 Javassist Java Programming Assistant makes Java bytecode manipulation simple It is a class library for editing byte
  • AirPlay Android接收端学习一 协议

    一 AirPlay 接收端描述 AirPlay是苹果的私有协议 xff0c 苹果官方未开放api和sdk xff0c 目前相对权威的一份非官方协议文档 这篇文档详细描述了aiplay 服务发现 图片 音视频 镜像投屏的相关协议 xff0c
  • android手机 加速度传感器 获取x,y,z轴上的加速度

    package com zhp andorid import android app Activity import android content Context import android hardware Sensor import
  • 声纹识别调研

    1 基础概念 声纹 Voiceprint xff0c 是用电声学仪器显示的携带言语信息的声波频谱 现代科学研究表明 xff0c 声纹不仅具有特定性 xff0c 而且有相对稳定性的特点 成年以后 xff0c 人的声音可保持长期相对稳定不变 实
  • Gradle学习三 :AS自定义Gradle插件

    一 定义插件 1 File New Module Android Library 取名plugin1 2 删除plugin1目录下所有文件 xff0c 只保留build gradle 编写build gradle 代码如下 xff1a ap