什么是gradle插件?
比方说我们任意打开一个开源的android源码 都能在build.gradle中看到如图所示的代码
这些apply plugin后面跟着的就是所谓的gradle插件
gradle插件有什么用?
一开始只是为了方便编译使用,传不同的参数编译出不一样的apk包,比如所谓的debug release包 混淆和未混淆的包等等。但是现在随着越来越多的开源框架(尤其是跟插件化 组件化 热修复 这种大型涉及到android编译过程的框架)复杂度提高,越来越多的框架选择自定义gradle plugin来完成对应的需求。所以知晓甚至熟悉如何自定义gradle 插件就成为我们读懂这些开源框架的必备技能之一
下面就简单介绍一下自定义gradle plugin中遇到的哪些坑
首先要明确一下自定义gradle插件分为两种
第一种:只给自己project下使用的插件。无需上传maven。
这种情况,我们在心间module的时候一定要取名为
否则as是不认的!
然后project的settings.gradle中 不要加: 例如:
注意看buildSrc 前面是没有冒号的
最后就是下目录结构:
注意只有src和build.gradle 是我们编辑的 其他都是编译以后自动生成的。目录结构注意不要搞错。
这种只给自己project下使用的gradle插件编写方式非常适合自学,但是最终我们都要提供出去给别人
使用的对吧。
第二种:上传到maven的gradle 插件。
上传到maven的gradle 插件名字就可以随便写了,不像前面那种必须写死成buildSrc 这个名字。
这是这两者最大的区别。然后因为要上传到maven所以我们的build.gradle自然也要修改
`apply plugin: 'groovy'
apply plugin: 'maven'
group='com.example.wuyue'
version='4.0.0'
dependencies {
compile gradleApi() //gradle sdk
compile localGroovy() //groovy sdk
}
repositories {
mavenCentral()
}
uploadArchives {
repositories {
mavenDeployer {
repository(url: uri('D:/repos'))
}
}
} `
可以看出来我们这里上传到的是本地maven仓库,注意group和version的值
然后在我们要使用这个插件的地方 也是在build.gradle中加入:
即可。注意classpath格式不要写错。