前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Gradle系列之 如何发布一个插件?

Gradle系列之 如何发布一个插件?

原创
作者头像
北洋
发布2023-09-23 21:01:15
1840
发布2023-09-23 21:01:15
举报
文章被收录于专栏:北洋csdn北洋csdn

插件编写:

插件(逻辑任务的集合),如果需要将一系列任务复用的话,定义一个插件里面写上这些任务。其他项目只要引用这个插件即可,不需要重新写这些任务

定义插件

创建类实现Plugin接口重写apply接口,task是project的一个方法。

应用插件

apply plugin:插件类名(调用apply方法传入plugin值)

apply(plugin:插件类名)等价于方法调用传入map参数

当方法参数是map的时候可以将方括号去掉apply(plugin:插件类名 )

不引起歧义的时候可以吧括号去掉 就是上面的写法: apply plugin: 插件类名

插件内部使用三方jar

classPath不一致

在编译java代码的时候会使用到第三方的jar包,这是因为在dependencies的闭包中引入了对应的依赖库,在External Libraries中可以看到。

但是脚本的classPath和编译java代码的ClassPath是不一样的。脚本的ClassPath是从Gradle启动的JVM里面引入的编译java代码的classPath是脚本配置dependcies闭包时引入的

因此如果想要在脚本中也使用三方类的话,就需要引入对应的classPath。

这也就是buildscript的作用

在脚本中调用buildscript方法和主项目一样引入repositories和dependencies,只不过dependencies中引入三方依赖时前缀必须配置为classpath,代表为脚本引入这个类。

导包后就可以在脚本中也使用三方类了

总结下:也就是说想要在脚本中使用三方类的话必须在构建脚本buildscript中引入对应的classpath。

还有一种方式引用buildSrc下面的自定义Plugin,在编译的时候如果发现了有buildsrc目录会首先编译这个目录下的类,因此脚本中也可以直接使用这个下面的类

脚本内部使用类只能通过这两种方式引入

发布插件

当插件足够成熟的时候想要独立出来发布到内部仓库供其他人使用时(引入方式还是通过buildscript的classpath引用)

查找流程

当apply一个三方插件的时候,会去查找classpath中是否有对应的插件名.properties文件,找到这个文件解压,里面会有一行:implementation-class=com.android.build.gradle.AppPlugin , 这个的意思是说想要使用这个插件的话需要加载这个类到脚本的classpath中;然后实例化这个类并调用apply方法

我正在参与2023腾讯技术创作特训营第二期有奖征文,瓜分万元奖池和键盘手表

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 定义插件
  • 应用插件
  • 插件内部使用三方jar
    • classPath不一致
    • 发布插件
      • 查找流程
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
      http://www.vxiaotou.com