Gradle系列---自定义插件(一)

本文详细介绍如何从零开始创建并使用自定义的Gradle插件,包括创建插件模块、配置build.gradle、编写插件代码、上传插件至本地仓库及在项目中应用插件的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

听说Gradle插件有三种,不过我只用过一种,哈哈哈~

创建Gradle Module

file -> new Module -> Android Library,输入库名,点击Next

删除无用文件

保留src/main和build.gradle,其他都删除

新建入口文件

src/main下新建groovy\com\blacktoast\stydy\gradle\StudyPlugin.groovy

配置build.gradle

apply plugin: 'groovy'  // 指定groovy插件
apply plugin: 'maven'   // 指定maven插件

// 配置插件信息
group = 'com.blacktoast.study.gradle'
version = '1.0.0'

// 依赖库配置
dependencies {
    // gradle sdk依赖
    compile gradleApi()
    // groovy sdk依赖
    compile localGroovy()
}

// 仓库配置
repositories {
    mavenCentral()
}

// 上传maven仓库任务配置
uploadArchives {
    repositories {
        mavenDeployer {
            // 也可以在这边配置插件信息
//            pom.groupId = 'com.blacktoast.study.gradle'
//            pom.artifactId = 'studygradle'
//            pom.version = '1.0.0'
            
            // 上传到../repo仓库,即本地仓库repo
            repository(url: uri('../repo'))
        }
    }
}

编写StudyPlugin.groovy文件

先同步下,保证两个sdk(gradle sdk、groovy sdk)已经导入,然后编写StudyPlugin.groovy文件

package com.blacktoast.study.gradle

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

public class StudyPlugin implements Plugin<Project> {

    @Override
    void apply(Project project) {
        // 新建task
        def studyTask = project.task("study")

        studyTask << {
            println "Welcome to Gradle's World."
        }

        // 设置task对应的group
        studyTask.group = "study"
    }
}

新建properties文件

在src/main下新建resources\META-INF\gradle-plugins\plugin.study.properties,其中plugin.study为插件名,插件名可以自定义。在其中添加以下代码,指定插件入口文件

implementation-class=com.blacktoast.study.gradle.StudyPlugin

上传插件

gradle中存在gradlestudy -> Tasks -> upload -> uploadArchivs(由于在build.gradle文件中配置的),点击这个task执行上传操作

使用自定义gradle插件

在项目的build.gradle中添加配置

...

buildscript {
    repositories {
        maven {
			// 指定本地仓库路径
            url uri('repo')
        }
		...
	}

	...

    dependencies {
		...
		// com.blacktoast.study.gradle为groupId
		// gradlestudy为artifactId
		// 1.0.0为version
		// 对应插件工程中build.gradle中配置的插件信息
		classpath "com.blacktoast.study.gradle:gradlestudy:1.0.0"
	}
}

...

allprojects {
    repositories {
        maven {
			// 指定本地仓库路径
            url uri('repo')
        }
	}
}

...

module中使用插件,plugin.study为properties文件对应的插件名

apply plugin: 'plugin.study'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值