其实从很久之前就想开发IDEA插件了,一来确实是有兴趣,二来如果可以定制插件的话确实可以解放生产力(其实还可以装逼,不是)。但是这方面的资料确实比较匮乏,很多问题解决起来摸不到头脑,像极了10多年前研究mysql的那批人,正好最近有一些感悟,分享一波,希望对大家有帮助
用本地安装的IDEA调试
问题起因是我这边使用的是m1芯片的mac开发的,在调试自己开发的插件的时候,总是启动配置版本号的intel版本的IDEA,虽然能启动,但是贼慢。。。用过最初版本的M1芯片电脑的同学应该都体验过当时的IDEA的卡顿程度。。。前几天在翻文档的时候,偶然发现了这个配置项。配置之后就可以通过本地的IDEA启动了~这样不仅提高了每次运行启动的速度,在初次build的时候也可以不用下载几百兆的软件包了!
只要在build.gradle文件中的intellij中添加这个属性就可以了,要注意version属性和localPath属性不能同时设置
文档地址:plugins.jetbrains.com/docs/intell…
查看PSI文件结构
我这边最开始开发的插件,是一个自动生成注解mybatis-plus注解的工具,当时开发的时候一直搞不清PSI文件结构,所以每次都要debug查看,属实麻烦
其实在Tools目录下有一个查看PSI结构的工具
比如现在我有这样的一个java文件
通过工具可以查看这个文件的PSI结构如下图
当搞不清文件结构的时候,就不用每次debug了,还是非常好用的
启动内部模式
这个应该是我最近发现的最有价值的功能!当我发现的那一刻,我仿佛变成了光。。。
文档地址:plugins.jetbrains.com/docs/intell…
首先是模式的开启,在Help菜单中的Edit Custom Properties添加一行配置,在文件中输入
idea.is.internal=true,然后重启IDEA之后就会生效
在重新启动之后就会发现Tool菜单中多了一行Internal Actions
本次主要说一下UI Debugger这个功能,因为其他的我也不清楚有什么用。。。。
这个功能可以看到在idea中的鼠标操作对应action都是什么,这么说可能不太清楚,举个例子
我们先做一个新建java类的操作
然后在UI Debugger中就可以看到我们刚才新建类的操作
复制图中的CreateClassAction,然后查找这个类,你会发现,我们找到了刚才操作的源码
打开这个class长这样,是不是感觉找到了新世界的大门
当然,到这我们其实也只是觉得牛逼,其实没有什么实际作用
下面来说几个我觉得用处比较大的
学习Api的使用
我们在开发插件的时候,其实最大的问题就是资料不足,很多api都不知道怎么用,当我们手里有了源码之后,我们其实可以从源码中学到很多Api的使用
比如上面图的中国呢CreateClassAction类的buildDialog方法,就是我们新建类的时候弹出来的框,可以看到IDEA根据不同的jdk版本,弹出来的内容也会有所不同
同样是CreateClassAction这个类中,看下图中的这个方法名,应该就是实际生成文件的逻辑了,原来居然有方法可以直接生成文件🤨🤨,那当以后有生成文件之类的需求,这部分就可以参考一下
有了这个,当我们有跟IDEA已有的类似的功能需求时,可以直接去找源码获取一些线索
寻找action的group
还有一个经常会遇到的问题就是,我现在想往某个菜单中加入我的action,但是有时很难找到这个菜单的group是什么,拿上面的例子举例
我们可以查看CreateClassAction这个类的引用位置(mac command+鼠标左键/win ctrl+鼠标左键),然后会发现,只有一个位置引用了这个类
所以我们新建类的这个action所在的组就是NewGroup1
拓展操作
除此之外,我们还可以做一些拓展(偷懒)的操作。比如,我可以直接继承方才创建类的action
然后在plugin.xml配置一下
启动调试之后,你就会看到一个和原来的创建java类一模一样的action(甚至图标都嫖过来了)
这就是本文的所有内容了,如果觉得有用的话,点个赞再走呀
如果有对插件开发有兴趣的同学欢迎加我v啊:yslowgenius 其实还有个公众号叫:笨天才(刚起步。。准备写一些平时研究的技术)