gradle插件开发

纯粹是个人学习总结,如有不对的地方请吐槽。

gradle插件开发

1 创建Gradle Module

(1) 首先,你得新建一个Android Project
(2) 然后再新建一个Module,这个Module用于开发Gradle插件,同样,Module里面没有gradle plugin给你选,但是我们只是需要一个“容器”来容纳我们写的插件,因此,你可以随便选择一个Module类型(如Phone&Tablet Module或Android Librarty),因为接下来一步我们是将里面的大部分内容删除,所以选择哪个类型的Module不重要。
(3) 将Module里面的内容删除,只保留build.gradle文件和src/main目录。
由于gradle是基于groovy,因此,我们开发的gradle插件相当于一个groovy项目。所以需要在main目录下新建groovy目录
(4)groovy又是基于Java,因此,接下来创建groovy的过程跟创建java很类似。在groovy新建包名,如:com.hc.plugin,然后在该包下新建groovy文件,通过new->file->MyPlugin.groovy来新建名为MyPlugin的groovy文件
(5)为了让我们的groovy类申明为gradle的插件,新建的groovy需要实现org.gradle.api.Plugin接口。如下:

image.png
image.png

(6) 现在,我们已经定义好了自己的gradle插件类,接下来就是告诉gradle,哪一个是我们自定义的插件类,因此,需要在main目录下新建resources目录,然后在resources目录里面再新建META-INF目录,再在META-INF里面新建gradle-plugins目录。最后在gradle-plugins目录里面新建properties文件,注意这个文件的命名,你可以随意取名,但是后面使用这个插件的时候,会用到这个名字。比如,你取名为com.hc.gradle.properties,而在其他build.gradle文件中使用自定义的插件时候则需写成:

image.png
image.png

然后在com.hc.gradle.properties文件里面指明你自定义的类
包路径必须是你的包路径

image.png
image.png

现在,你的目录应该如下:

image.png
image.png

(7) 因为我们要用到groovy以及后面打包要用到maven,所以在我们自定义的Module下的build.gradle需要添加如下代码:

image.png
image.png

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

dependencies {
//gradle sdk
compile gradleApi()
//groovy sdk
compile localGroovy()
}

repositories {
mavenCentral()
}

2 打包到本地Maven

前面我们已经自定义好了插件,接下来就是要打包到Maven库里面去了,你可以选择打包到本地,或者是远程服务器中。在我们自定义Module目录
下的build.gradle添加如下代码:
uploadArchives {
repositories.mavenDeployer {
repository(url: uri('../repo'))
pom.groupId = 'com.app.plugin'//你的包名
pom.artifactId = 'gradleplugin'//在需要引用插件时用到
pom.version = '1.0.0'
}
}

其中,group和version后面会用到,我们后面再讲。虽然我们已经定义好了打包地址以及打包相关配置,但是还需要我们让这个打包task执行。点击AndroidStudio右侧的gradle工具,如下图所示:

image.png
image.png
3 使用自定义的插件

接下来就是使用自定义的插件了,一般就是在app这个模块中使用自定义插件,因此在app这个Module的build.gradle文件中,需要指定本地Maven地址、自定义插件的名称以及依赖包名。简而言之,就是在app这个Module的build.gradle文件中后面附加如下代码:

image.png
image.png

好啦,现在终于运行了自定义的gradle插件啦!

4 开发只针对当前项目的Gradle插件

前面我们讲了如何自定义gradle插件并且打包出去,可能步骤比较多。有时候,你可能并不需要打包出去,只是在这一个项目中使用而已,那么你无需打包这个过程。

只是针对当前项目开发的Gradle插件相对较简单。步骤之前所提到的很类似,只是有几点需要注意:
新建的Module名称必须为BuildSrc
无需resources目录

目录结构如下所示:

image.png
image.png

其中,build.gradle内容为:
apply plugin: 'groovy'
dependencies {
compile gradleApi()//gradle sdk
compile localGroovy()//groovy sdk
}
repositories {
jcenter()
}

SecondPlugin.groovy内容为:

package com.hc.second
import org.gradle.api.Plugin
import org.gradle.api.Project

public class SecondPlugin implements Plugin<Project> {

void apply(Project project) {
    System.out.println("========================");
    System.out.println("这是第二个插件!");
    System.out.println("========================");
}

}

在app这个Module中如何使用呢?直接在app的build.gradle下加入

apply plugin: com.hc.second.SecondPlugin

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值