其实从好久之前就想开发IDEA插件了,一来的确是有兴趣,二来如果能够定制插件的话的确能够解放生产力(其实还能够装逼,不是)。可是这方面的材料的确比较匮乏,许多问题解决起来摸不到脑筋,像极了10多年前研讨mysql的那批人,正好最近有一些感悟,分享一波,期望对咱们有帮助

用本地装置的IDEA调试

问题起因是我这边运用的是m1芯片的mac开发的,在调试自己开发的插件的时分,总是发动装备版别号的intel版别的IDEA,虽然能发动,可是贼慢。。。用过最初版别的M1芯片电脑的同学应该都体会过其时的IDEA的卡顿程度。。。前几天在翻文档的时分,偶尔发现了这个装备项。装备之后就能够经过本地的IDEA发动了~这样不只提高了每次运转发动的速度,在初度build的时分也能够不用下载几百兆的软件包了!

你可能不知道的IDEA Plugin开发技巧

只要在build.gradle文件中的intellij中增加这个特点就能够了,要注意version特点和localPath特点不能同时设置

你可能不知道的IDEA Plugin开发技巧

文档地址:plugins.jetbrains.com/docs/intell…

检查PSI文件结构

我这边最开端开发的插件,是一个自动生成注解mybatis-plus注解的东西,其时开发的时分一向搞不清PSI文件结构,所以每次都要debug检查,事实费事

其实在Tools目录下有一个检查PSI结构的东西

你可能不知道的IDEA Plugin开发技巧

比方现在我有这样的一个java文件

你可能不知道的IDEA Plugin开发技巧

经过东西能够检查这个文件的PSI结构如下图

你可能不知道的IDEA Plugin开发技巧
当搞不清文件结构的时分,就不用每次debug了,仍是非常好用的

发动内部模式

这个应该是我最近发现的最有价值的功用!当我发现的那一刻,我似乎变成了光。。。

文档地址:plugins.jetbrains.com/docs/intell…

首先是模式的敞开,在Help菜单中的Edit Custom Properties增加一行装备,在文件中输入 idea.is.internal=true,然后重启IDEA之后就会生效

你可能不知道的IDEA Plugin开发技巧

你可能不知道的IDEA Plugin开发技巧
在重新发动之后就会发现Tool菜单中多了一行Internal Actions

你可能不知道的IDEA Plugin开发技巧

本次主要说一下UI Debugger这个功用,因为其他的我也不清楚有什么用。。。。

你可能不知道的IDEA Plugin开发技巧

这个功用能够看到在idea中的鼠标操作对应action都是什么,这么说可能不太清楚,举个比方

咱们先做一个新建java类的操作

你可能不知道的IDEA Plugin开发技巧

然后在UI Debugger中就能够看到咱们方才新建类的操作

你可能不知道的IDEA Plugin开发技巧

仿制图中的CreateClassAction,然后查找这个类,你会发现,咱们找到了方才操作的源码

你可能不知道的IDEA Plugin开发技巧

翻开这个class长这样,是不是感觉找到了新世界的大门

你可能不知道的IDEA Plugin开发技巧

当然,到这咱们其实也仅仅觉得牛逼,其实没有什么实践效果

下面来说几个我觉得用途比较大的

学习Api的运用

咱们在开发插件的时分,其实最大的问题便是材料缺乏,许多api都不知道怎样用,当咱们手里有了源码之后,咱们其实能够从源码中学到许多Api的运用

比方上面图的我国呢CreateClassAction类的buildDialog办法,便是咱们新建类的时分弹出来的框,能够看到IDEA根据不同的jdk版别,弹出来的内容也会有所不同

你可能不知道的IDEA Plugin开发技巧

同样是CreateClassAction这个类中,看下图中的这个办法名,应该便是实践生成文件的逻辑了,原来居然有办法能够直接生成文件,那当以后有生成文件之类的需求,这部分就能够参阅一下

你可能不知道的IDEA Plugin开发技巧

有了这个,当咱们有跟IDEA已有的相似的功用需求时,能够直接去找源码获取一些头绪

寻觅action的group

还有一个经常会遇到的问题便是,我现在想往某个菜单中参加我的action,可是有时很难找到这个菜单的group是什么,拿上面的比方举例

咱们能够检查CreateClassAction这个类的引证位置(mac command+鼠标左键/win ctrl+鼠标左键),然后会发现,只有一个位置引证了这个类

你可能不知道的IDEA Plugin开发技巧

所以咱们新建类的这个action地点的组便是NewGroup1

拓宽操作

除此之外,咱们还能够做一些拓宽(偷闲)的操作。比方,我能够直接继承方才创建类的action

你可能不知道的IDEA Plugin开发技巧

然后在plugin.xml装备一下

你可能不知道的IDEA Plugin开发技巧

发动调试之后,你就会看到一个和原来的创建java类如出一辙的action(甚至图标都嫖过来了)

你可能不知道的IDEA Plugin开发技巧

这便是本文的一切内容了,如果觉得有用的话,点个赞再走呀

如果有对插件开发有兴趣的同学欢迎加我v啊:yslowgenius 其实还有个大众叫喊:笨天才(刚起步。。预备写一些平时研讨的技能)