Gradle plugin系列笔记-自定义plugin
2019-03-12 本文已影响0人
撸吗撸码
注意:windows下 在studio的terminal窗口敲 .../gradlew;mac 下敲./gradlew
1.自己新建一个目录必须叫 buildSrc,里面包含src,resources子文件夹
ressources下面再新建META-INF文件夹,接着在这个文件夹下新建 gradle-plugins文件夹,接着在这个文件夹下新建hencoder.properties文件
为了让大家更清楚目录结构,我上传一张项目的截图如下:

2.编辑hencoder.propterties文件的内容
添加:
implementation-class = com.hencoder.pulgindemo.PluginDemo
这里就说明了你的plugin指的是哪个类。
这个类的内容大致如下
class PluginDemo implements Plugin<Project>{
@Override
void apply(Project target) {
def author = target.extensions.create('hencoder',ExtensionDemo);
target.afterEvaluate {
println("hell ${author.name}!")
}
}
}
3.项目运行时会先取找这个路径下buildSrc-》ressources-》META-INF-》gradle-plugins-》所有的properties文件,然后执行。
4.plugin写好了,怎么用啊?别急,马上说。
我们在我们的app的build.gradle里面引用怎么引用呢?如下apply plugin:'xxx'
这里的“xxx”就是你新建的properties文件名,我写的是hencoder,那么就是
apply plugin:'hencoder',这样就行了。
5.说说get,set这两个方法
我们调用属性时,比如上面的 println("hell ${author.name}!"),其实调用的是getName这个方法,同样,我们赋值时,author.name="hanmeimei",调用的是author.setName(),get,set方法都被gradle实现了。
6.总结
plugin项目里面可以不配置plugin.gradle文件,因为gradle都帮我们配置好了,不写就是啥也不操作。
写好的plugin项目可以不用配置到app的setting.gradle里面,plugin项目本身就会先被执行一次,如果你再配置到app里面就会执行两次。