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

博主所用软件版本为:

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

编写插件实现代码

groovy 复制代码
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

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

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

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

2、发布插件到本地

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

groovy 复制代码
plugins {
    id 'maven-publish'
}

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

groovy 复制代码
//当前文件中添加 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仓位置

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

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

groovy 复制代码
plugins {
    id 'com.example.hello.HelloPlugin' apply false
}

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

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

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

groovy 复制代码
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】

后言:

如果这篇文章有帮助到你,欢迎打赏,支持我的创作。

相关推荐
weixin_4414552615 分钟前
说说Java有哪些集合类
java·开发语言
合作小小程序员小小店22 分钟前
web网页开发,在线%台球俱乐部管理%系统,基于Idea,html,css,jQuery,jsp,java,ssm,mysql。
java·前端·jdk·intellij-idea·jquery·web
程序定小飞1 小时前
基于springboot的作业管理系统设计与实现
java·开发语言·spring boot·后端·spring
晓庆的故事簿1 小时前
windows下载和使用minio,结合java和vue上传文件
java·开发语言
程序员小假1 小时前
我们来说一下 Mybatis 的缓存机制
java·后端
qq_336313931 小时前
java基础-学生管理系统升级
java
弥巷2 小时前
【Android】Android内存缓存LruCache与DiskLruCache的使用及实现原理
android·java
好好沉淀2 小时前
Apache 工具包(commons-io commons-lang3 )保姆介绍
java·ide
毕设源码-邱学长2 小时前
【开题答辩全过程】以 服装购物平台为例,包含答辩的问题和答案
java·eclipse
多喝开水少熬夜2 小时前
堆相关算法题基础-java实现
java·开发语言·算法