自定义Gradle插件
个人博客
自定义Gradle插件
自定义Gradle插件可以分三种
定义在具体的Module对应的gradle文件里。这种方式定义的插件只能在定义的Module中使用
定义名为BuildSrc的Module,在BuildSrc里定义。这种方式定义的插件只能在同一个工程中使用。
定义其它名字的Module,在新定义的Module里定义插件。这种方式定义的插件可以给第三方使用。
下面针对这三种方式,以开发一个可以让用户自定义配置的插件为例,分别来展开具体的定义插件过程
定义在Gradle文件里
定义
在app模块下的gradle文件中,增加定义
1 | class CustomInnerConfig { |
同步项目后,可以在Android Studio右侧的gradle面板中看到新增加的插件
使用
自定义配置
1 | customInnerConfig { |
在gralde面板中,找到CustomInnerTask,双击运行
输出结果如下,可以看到自定义的配置已经生效:
1 | Parallel execution with configuration on demand is an incubating feature. |
在BuildSrc模块中定义
定义
新建名为BuildSrc的模块,删除BuildSrc模块下其它文件,只保留build.gradle。配置build.gradle文件如下:
1 | apply plugin: 'groovy' |
同步后,新建src/main目录
在main目录下新建groovy文件夹
然后在groovy文件夹下新建目录:com/wangyz/local
在local目录下新建CustomLocalConfig.java文件,内容如下:
1 | package com.wangyz.local; |
在local目录下新建LocalPlugin.groovy文件,内容如下:
1 | package com.wangyz.local |
使用
在app模块下的gradle文件中引入刚才定义的插件
1 | apply plugin: com.wangyz.local.LocalPlugin |
同步后,gradle面板如下
自定义配置
1 | customLocalConfig{ |
双击CustomLocalTask,执行结果如下
1 | CustomLocalTask,key=local key |
定义可供第三方使用的插件
定义
新建名为Plugins的模块,删除Plugins模块下src/main其它文件。配置build.gradle文件如下:
1 | apply plugin: 'groovy' |
在main目录下新建groovy文件夹
然后在groovy文件夹下新建目录:com/wangyz/plugins
CustomConfig.java文件,内容如下:
1 | package com.wangyz.plugins; |
在plugins目录下新建CustomPlugin.groovy文件,内容如下:
1 | package com.wangyz.plugins |
在Plugins模块的src/main目录下新建resources/META-INF/gradle-plugins目录,在目录下新建名为com.wangyz.plugins.CustomPlugin.properties的文件,文件名即为第三方引用的插件名称。文件内容为:
1 | implementation-class=com.wangyz.plugins.CustomPlugin |
在这个文件里配置了之前定义的CustomPlugin的路径
发布插件
在Plugin模块的build.gradle文件中增加以下配置
1 | apply plugin: 'maven-publish' |
同步后,在Terminal面板执行gradle publish命令,然后在D:\Repository下可以找到生成的插件
引入插件
在工程的build.gradle文件中增加
1 | repositories { |
在需要引入的模块的build.gradle中增加
1 | apply plugin: 'com.wangyz.plugins.CustomPlugin' |
同步后,在gradle面板双击CustomTask运行
输出结果:
1 | CustomTask,key=custom key |
源码地址:https://github.com/milovetingting/Samples/tree/master/GradlePlugin