本文内容包括:
- 利用AndroidStudio,编写自定义Gradle plugin
- MavenDeployer 发布plugin
- 使用Gradle plugin
简介
之前写了一个Android中的AOP框架Cooker.
这里总结一下里面用到的两块小知识:
1)自定义 Gradle plugin
2)发布自己的jar到 maven仓库
项目中引入自定义Gradle plugin一般有三种方法:
- 直接写在 build.gradle中.
- plugin源码放到rootProjectDir/buildSrc/src/main/groovy目录下
- plugin打包成jar, 发布到maven仓库, 然后项目通过Build Script依赖jar的形式引入
下面介绍的是第3种方式.
一. 用AndroidStudio中写plugin
1.新建一个Android工程
2.在这个工程里面,新建一个Android Library
先起名叫cooker-plugin吧, 我们将会用这个library写Gradle plugin
3.建立plugin的目录结构
把这个cooker-plugin中默认产生的文件都删除, 然后按照下面结构新建文件
解释
1.因为我们用Groovy写的插件, 插件代码放在 src/main/groovy下
2.在src/main/resources/META-INF/gradle-plugins 里声明plugin信息
比如:新建cooker-plugin.properties
文件,内容如下
1
2 >
>
implementation-class=com.helen.plugin.CookerPlugin
1 | > 这里: |
4.实现插件
实现plugin,其实就是需要继承实现Plugin
1 | package com.helen.plugin |
5.一个简单的plugin就写好了
在cooker-plugin项目中, build一下.
就能在build/libs下生成对应的plugin插件了
这个插件就能使用了. 可以发布在本地仓库或者Maven仓库.
二. mavenDeployer发布插件
下面介绍一下利用mavenDeployer发布在本地仓库.
1. 引入 mavenDeplayer插件
修改cooker-plugin的build.gradle, 修改后如下:
1 | apply plugin: 'groovy' |
2.用uploadArchices发布
运行uploadArchives. 就能在设置的仓库路径中生成 cooker-plugin了
三. 使用gradle plugin
1.在build.gradle引入 cooker-plugin
1 | apply plugin: 'com.android.application' |
2. 我们编译App的时候,cooker-plugin就会介入了
每次clean/build时, 在Gradle Console可以看到我们的loghello, this is cooker plugin!
1 | Configuration on demand is an incubating feature. |
3.使用cooker-plugin中定义的task
前面demo中, 我们新建了一个task: cooker-test-task
, 他简单输出一句log.下面测试运行一下这个task.
在控制台输入 gradle cooker-test-task
运行结果如下
四. 总结
Demo地址-Github
到此为止, 自定义Gradle plugin就介绍完了.
结合AndroidStudio, 自定义Gradle plugin可以完成很多功能.
比如cooker的plugin完成了:
1)添加编译依赖
2)进行Aspecj编译
3)自动生成混淆配置
五. 开发只针对当前项目的Gradle插件(附)
前面我们讲了如何自定义gradle插件并且打包出去,可能步骤比较多。有时候,你可能并不需要打包出去,只是在这一个项目中使用而已,那么你无需打包这个过程。
只是针对当前项目开发的Gradle插件相对较简单。步骤之前所提到的很类似,只是有几点需要注意:
1 | 1.新建的Module名称必须为BuildSrc |
目录结构如下所示:
其中,build.gradle内容为:
1 | apply plugin: 'groovy' |
SecondPlugin.groovy内容为:
SecondPlugin.groovy内容为:
1 | package com.hc.second |
在app这个Module中如何使用呢?直接在app的build.gradle下加入
1 | apply plugin: com.hc.second.SecondPlugin |
clean一下,再make project,messages窗口信息如下
乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站