其实从好久之前就想开发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 其实还有个大众叫喊:笨天才(刚起步。。预备写一些平时研讨的技能)