使用IntelliJ IDEA开发Gradle插件并发布到本地

news2025/1/18 3:29:43

博主所用软件版本为:
IntelliJ IDEA 2024.1.4 (Community Edition)
Android Studio Ladybug Feature Drop | 2024.2.2 Beta 1

1、制作gradle插件(IntelliJ IDEA 2024.1.4)

新建groovy工程,File–>New–>Project…
在这里插入图片描述
右键点击包名,New–>Groovy Script
在这里插入图片描述
输入插件实现类名称
在这里插入图片描述
添加gradle依赖,不然无法使用gradle API
在这里插入图片描述

编写插件实现代码

package com.example.hello

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

class HelloPlugin implements Plugin<Project> {

    @Override
    void apply(Project target) {
        println('good good study, day day up!')
    }
}

创建插件id描述文件hello-gradle-plugin.properties

# 当前文件名为插件引用时的id
# plugins {
#    id 'hello-gradle-plugin'
# }
implementation-class=com.example.hello.HelloPlugin

注意:文件名为插件引用时的id

删除用不到的文件Main.groovy文件、java目录、test目录(可选操作)

2、发布插件到本地

添加maven-publish插件并点击右上角Load Gradle Change按钮同步

plugins {
    id 'maven-publish'
}

在这里插入图片描述

添加maven自定义发布配置信息

//当前文件中添加 plugins { id 'maven-publish' } 后下面的内容会在输入过程中自动补全
publishing {
    publications {
        create('HelloPlugin', MavenPublication.class, new Action<MavenPublication>() {
            @Override
            void execute(MavenPublication u) {
                //依赖引用示例:implementation 'com.example.hello:HelloPlugin:1.0.0'
                u.groupId = 'com.example.hello'
                u.artifactId = 'HelloPlugin'
                u.version = '1.0.0'
                //方式一,添加产物
                u.from(components['java'] as SoftwareComponent)
                //方式二,添加产物
                u.artifact("build/outputs/aar/replugin-host-lib-debug.aar")
                u.artifact(androidJavadocJar)
                u.artifact(androidSourcesJar)
            }
        })
    }
    //定义本地maven发布仓位置
    repositories {
        maven {
            name  'repo'
            url './repo'
        }
    }
}

编译gradle插件并发布到本地repo maven仓库
在这里插入图片描述

3、引用Gradle插件(Android Studio Ladybug)

在文件settings.gradle中定义maven仓位置

pluginManagement {
    repositories {
        maven {
            //自定义gradle插件生成文件夹
            url uri('C:\\Users\\lj0015274\\IdeaProjects\\HelloGradlePlugin\\repo')
        }
    }
}

文件build.gradle文件中添加插件声明

plugins {
    id 'com.example.hello.HelloPlugin' apply false
}

添加插件依赖自定义解析策略

pluginManagement {
    resolutionStrategy {
        eachPlugin {
            if (requested.id.id == 'com.example.hello.HelloPlugin') {
                useModule('com.example.hello:HelloPlugin:1.0.0')
            }
        }
    }
}

app模块中build.gradle里面添加插件引用

plugins {
    //此处id为自定义插件工程中 hello-gradle-plugin.properties 的文件名
    id 'hello-gradle-plugin'
}

点击右上角大象按钮(Sync Project with Gradle Files)同步gradle项目
在这里插入图片描述
同步结果如下图,成功打印自定义gradle插件中的日志
在这里插入图片描述

参考资料:
如何使用Android Studio自定义Gradle插件【https://www.jianshu.com/p/92504554d727】

后言:
如果这篇文章有帮助到你,欢迎打赏,支持我的创作。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2256316.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Trimble X9三维激光扫描仪高效应对化工厂复杂管道扫描测绘挑战【沪敖3D】

化工安全关系到国计民生&#xff0c;近年来随着化工厂数字化改革不断推进&#xff0c;数字工厂逐步成为工厂安全管理的重要手段。而化工管道作为工厂设施的重要组成部分&#xff0c;由于其数量多、种类繁杂&#xff0c;一直是企业管理的重点和难点。 传统的化工管廊往往缺乏详…

如何实现远程对主机进行关机、重启操作

WGCLOUD是一款开源免费的运维工具&#xff0c;使用简单&#xff0c;安装方便 我们主要通过 WGCLOUD监控系统的指令下发模块&#xff0c; 来实现关机和重启主机的操作 这里以Linux主机为例说明&#xff0c;Windows也是一样的&#xff0c;只是重启主机的命令不同而已&#xff0c…

【批处理脚本】更改Windows系统中的 hosts 解析文件

概述 作用 修改 Windows 系统中的 hosts 文件&#xff0c;可以实现 插入 或 删除 条目。该脚本允许用户以管理员权限执行&#xff0c;将特定的域名解析到指定的 IP 地址 应用场景 非常适用于需要频繁或批量修改 hosts 文件的场景&#xff1a; 屏蔽网站、域名重定向、DNS 污染防…

无人机舵机驱动控制原理!

一、舵机的基本结构和工作原理 舵机是一种位置&#xff08;角度&#xff09;伺服的驱动器&#xff0c;由电子控制与机械控制部分组成。当控制信号输入时&#xff0c;电子控制部分会根据控制器的指令调节直流电机输出的旋转角度和速度&#xff0c;由机械部分转化为控制面的位移…

gozero项目迁移与新服务器环境配置,包含服务器安装包括go版本,Nginx,项目配置包括Mysql,redis,rabbit,域名

迁移 **GoZero** 项目到新服务器并配置相关环境涉及多个步骤。以下是一个系统化的指南&#xff0c;涵盖服务器环境安装、数据库和缓存配置、项目部署以及域名绑定。 ### 步骤概述 1. **服务器环境配置** - 安装 Go 语言环境 - 安装 Nginx - 安装 MySQL 和 Redis -…

华为交换机配置基础

文章目录 华为设备配置视图ensp入门拓扑搭建和IP地址配置IP地址和网关静态路由配置动态路由RIP路由配置 OSPF配置单臂路由【实现不同vlan之间互联互通】console 密码模式AAA认证的原理和配置telnet 远程登录 华为设备配置视图 华为设备登录配置 <AR> system-view //进入…

善于运用指针--通过指针引用数组

一个数组包含若干个元素&#xff0c;每个元素在内存中占用储存单元&#xff0c;它们都有相应的地址&#xff0c;指针变量能指向变量&#xff0c;也可以指向地址。所谓数组元素的地址&#xff0c;也就是数组元素的指针。 文章目录 前言一、在引用数组元素时指针的运算二、通过指…

word poi-tl 图表功能增强,插入图表折线图、柱状图、饼状图

目录 问题解决问题poi-tl介绍 功能实现引入依赖功能介绍 功能实例饼图模版代码效果图 雷达图&#xff08;模版同饼图&#xff09;代码效果图 柱状图&#xff08;模版同饼图&#xff09;代码效果图 附加CustomCharts 工具类CustomChartSingleSeriesRenderData 数据对象CustomCha…

QT数据库SQLite:QsqlTableModel使用总结

数据库连接、数据模型与界面组件所涉及的类之间的关系如下所示&#xff1a; 数据库类 QSqlDatabase 类用于建立与数据库的连接&#xff0c;QSqlDatabase 对象就表示这种连接。QSqlDatabase 类的功能主要分为三大部分&#xff1a; 1、创建数据库连接&#xff0c;即创建 QSqlDat…

[MoeCTF 2022]what are y0u uploading?

[BJDCTF 2020]签个到? 解压后发现两个文件夹&#xff0c;进去发现有个压缩包 这里压缩包打不开&#xff0c;就直接给改成png后缀 发现变成了一个二维码 然后用QR工具扫一下 得到flag NSSCTF{i_am_a_tupian} [MoeCTF 2022]what are y0u uploading&#xff1f; 右击查看源码…

查询品牌涉及两张表(brand、brand_admin_mapping)

文章目录 1、BrandController2、AdminCommonService3、BrandApiService3、BrandCommonService4、BrandSqlService涉及的表SQL 查询逻辑参数处理执行查询完整 SQL 逻辑参数映射总结 SELECT * FROM brand_admin_mapping WHERE admin_id 252SELECT * FROM brand WHERE id 44SELE…

k8s 为什么需要Pod?

Pod&#xff0c;是 Kubernetes 项目中最小的 API 对象&#xff0c;更加专业的说&#xff0c;Pod&#xff0c;是 Kubernetes 项目的原子调度单位。 Pod 是 Kubernetes 里的原子调度单位。这就意味着&#xff0c;Kubernetes 项目的调度器&#xff0c;是统一按照 Pod 而非容器的资…

如何在Ubuntu中利用repo和git地址下载获取imx6ull的BSP

01-设置git的用户名和邮箱 git config --global user.name "suwenhao" git config --global user.email "2487872782qq.com"这里不设置的话后面在第5步的repo配置中还是会要求输入&#xff0c;而且以后进行相关操作都要输入&#xff0c;不妨现在就进行配置…

【机器学习】基于SVM、逻辑回归和CNN的手写数字识别:性能对比与应用分析

基于SVM、逻辑回归和CNN的手写数字识别&#xff1a;性能对比与应用分析 1 基于SVM对手写数字识别2 基于逻辑回归对手写数字进行识别3 基于CNN对手写数字进行识别总结对比分析 1 基于SVM对手写数字识别 在使用SVM方法对手写数字进行识别的时候&#xff0c;我采用了一对多&#…

Elasticsearch ILM 故障排除:常见问题及修复

作者&#xff1a;来自 Elastic Stef Nestor 大家好&#xff01;我们的 Elasticsearch 团队正在不断改进我们的索引生命周期管理 (index Lifecycle Management - ILM) 功能。当我第一次加入 Elastic Support 时&#xff0c;我通过我们的使用 ILM 实现自动滚动教程快速上手。在帮…

【html网页页面009】html+css制作学校官网主题网页制作含登录(5页面附效果及源码)

校园网站主题网页制作 &#x1f964;1、写在前面&#x1f367;2、涉及知识&#x1f333;3、网页效果&#x1f308;4、网页源码4.1 html4.2 CSS4.3 源码获取w034学校网页源码及介绍链接 &#x1f40b;5、作者寄语 &#x1f964;1、写在前面 学校网站主题的网页 一共5个页面 网…

JavaScript柯里化和组合函数以及严格模式介绍

柯里化介绍 柯里化的结构 简化版本 让函数的职责单一 柯里化的复用 对某些逻辑进行复用 打印日志的柯里化 自动化柯里化函数 实现柯理化函数 1.柯里化函数是对函数进行处理的方法&#xff0c;所以参数就为一个函数&#xff0c;这里取名w为fn 2.定义一个函数curried&#xff0…

查看 tomcat信息 jconsole.exe

Where is the jconsole.exe? location: JDK/bin/jconsole.exe

【SpringBoot】Day11-09 参数配置化

为什么需要参数配置化 对于这些配置信息是直接硬编码&#xff0c;写死在java程序中的&#xff0c;存在几个问题&#xff1a; 如果这些参数发生变化了&#xff0c;就必须在源程序代码中改动这些参数&#xff0c;然后需要重新进行代码的编译&#xff0c;将Java代码编译成class字节…

企业迎接现场网络安全检查准备

企业安全负责人一听到主管单位单位要来现场进行网络安全就紧张可是对于不少重点企业来说&#xff0c;现场检查又是不可避免的&#xff0c;今天就谈谈企业如何准备网络安全检查。 网络安全现场检查类型&#xff1a; 常规检查&#xff1a;年度例行重要信息系统网络安全检查&…