创建自定义的Gradle插件

本文介绍了如何创建一个Gradle模块,配置必要的插件如java-library和kotlin,添加依赖如ASM和AGP。接着,详细阐述了如何发布到本地Maven仓库,包括设置组ID、版本和唯一标识,以及生成源码jar。文章还强调了配置Java编译版本的重要性,并提到需创建插件入口类。最后,提到了在其他项目中使用该自定义插件的方法。

一、创建Module

在这里插入图片描述
在这里插入图片描述

二、添加Gradle插件

plugins {
    id 'java-library'  // library类型的module必须配置
    id 'org.jetbrains.kotlin.jvm'    // 此module支持kotlin编写
    id 'maven-publish'       // 此module支持发布到本地maven
    id 'groovy'            // 此module 支持groovy语言编写
}

三、添加代码依赖

dependencies {
    implementation 'org.ow2.asm:asm-commons:9.2'        // ASM库
    implementation "com.android.tools.build:gradle-api:7.2"    // AGP api库
    implementation "com.android.tools.build:gradle:7.2.0"    // AGP api库
    implementation 'org.jetbrains:annotations:16.0.1'    //  注解库
    implementation gradleApi()       // Gradle Task的一些API 库
    implementation localGroovy()       // Groovy语言库
}

四、添加发布到本地maven Task

def group = 'com.zhpew.lib' //组
def versionA = '1.0.0' //版本
def artifactIdA = 'myGradlePlugin' //唯一标示

task sourceJar(type: Jar) {
    archiveClassifier.set('sources')
    from sourceSets.main.java.srcDirs
}

// 发布Task
publishing {
    publications {
        debug(MavenPublication) {
            groupId = group
            artifactId = artifactIdA
            version = versionA
            from components.java
            artifact sourceJar
        }
    }
    // 添加仓库地址
    repositories {
        // 本地仓库, 会创建 repos 文件, 位于项目根目录下
        maven { url uri('../repos') }
    }
}

五、配置Java编译版本(很重要,不同版本可能影响到.class文件的编译和AGP库的依赖)

java {
    sourceCompatibility = JavaVersion.VERSION_1_8
    targetCompatibility = JavaVersion.VERSION_1_8
}

六、配置插件入口

创建一个Class并继承Plugin,这个位置gradle-plugins是META-INF的子文件夹,AS把它收缩展示成一个文件夹了,注意一下,完成配置,它就成为了此插件的入口,可以使用groovy编写,也可以用Kotlin来写,build.gradle里面都有配置

在这里插入图片描述
在这里插入图片描述

七、将插件发布到本地

在这里插入图片描述

此Task运行完毕之后,看到repos文件夹下有了文件,即发布成功

在这里插入图片描述

自此,我们的自定义插件就创建完毕了,那我们应该怎么在项目中使用到这个插件呢?
请看下一章。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值