前言
用了这么多年的IDEA,也用过不少IDEA插件,在2021年就开始学习了一下IDEA插件开发,但是用得都不是太深,今年2023年,刚好工作需要,深入研究了IDEA插件的开发,踩了不少的坑,后续将会把相关经验和材料整理发出来。
这篇文章原本写于2022年,DEA是2021版本,主要是进行IDEA插件开发的快速入门,能够快速把Hello world搞定,后面抽时间把教程更新到最新的2023版本。
一、环境准备
1.1 JDK11
idea开发需要准备一个基础JDK,主要是用于源码编译。
我们使用Gradle创建工程,可以直接引入idea开发的gradle插件,会自动引入idea开发自身需要的sdk。
如果不通过gradle创建插件,那么是需要单独配置idea的SDK的
1.2 Idea2020以上
通过Gradle创建项目,可以在gradle中指定用于调试的idea版本,gradle将会自动下载
如果下载太慢,可以配置使用本地idea用于调试,但是必须指定本地社区版本idea才可以进行调试
二、Idea插件工程创建
上图是Idea2021版本的创建工程视图,对于Idea2022版本,有着较大的区别。
step1:
选择Gradle
step2:
Project SDK选择 JDK11
step3:
依赖包勾选Java和Intellij Platform Plugin
step4:
点击Next
::: tip
Kotlin DSL build script,这个勾选了,那么Gradle会使用.kts文件管理依赖,不勾选,那么使用的是Groovy管理依赖
如果项目中有kotlin代码,那么还需要勾选 Kotlin/JVM的依赖
当然,上面选择的都是可以在打开工程后修改的
:::
step5:
填写项目名和项目保存地址
Finish
完成后等待Idea打开项目
三、Idea工程结构介绍
.gradle目录是gradle使用的
gradle目录是配置wrapper,用于指定编译使用的gradle版本,wrapper目录需要上传git,保证所有人使用相同gradle版本编译项目
gradlew是linux/macos的gradle脚本
gradlew.bat是windows的gradle脚本
settings.gradle是配置gradle工程信息的
build.gradle文件是项目核心配置,其中group相当于maven的坐标,version是jar的版本,也是插件的版本
intellij是指定调试的IDEA版本,设置version值,会在线下载对应版本,也可以通过下面的方式下载离线版本
localPath = '/home/user/idea-IC-181.4445.78'
plugin.xml介绍:
denpends是用于声明依赖的:
表示该插件必须在具备这些依赖的idea上面才可以正常运行
例如,该插件依赖maven,那么只有在有maven模块的InteliJ平台运行,比如idea,而例如pycharm就不能运行该插件
四、解决乱码问题
4.1 编译时乱码解决
编译时报 GBK 错误 解决方案 : 在 build.gradle 中添加如下代码 , 该项在根节点下即可 , 与 plugins , repositories , dependencies 同级 ;
tasks.withType(JavaCompile) {
options.encoding = "UTF-8"
}
4.2 控制台乱码解决
-
方案一: 打开 IntelliJ IDEA 安装目录 , 在 bin 目录下找到 idea64.exe.vmoptions 文件 , 在文件的最后一行添加 -Dfile.encoding=utf-8 内容 ;
-
方案二: 如果嫌找文件太麻烦 , 可以按照如下路径操作 , 菜单 -> Help -> Edit Custom VM OPtions , 也可以修改对应的 ideaXX.exe.vmoptions 文件配置 ;
五、第一行插件代码
5.1 添加Action
通过快捷创建Action的方式,可以自动生成对应的类,并且将Action添加到plugin.xml的action中
除了这种方式,也可以手动创建Java类,并配置plugin.xml文件
5.2 填写Action信息
创建Action需要配置的基本信息
填写完成后,点击Ok按钮
5.3 实现弹窗Hello World
我们在actionPerformed中实现触发action之后的功能代码
这里通过Messages.showInfoMessage接口,弹出一个信息提示弹窗,展示西方古老的问候语Hello world!
六、插件运行
如果我们是新建的插件工程,那么字tools bar工具栏可以直接点击按钮运行
如果我们是打开的Gradle工程,可能tool bar没有信息
我们可以通过gradle runIde命令直接启动运行插件
插件点击运行后,会自动打开一个调试插件用的idea窗口
这个调试的idea是社区版的
我们可以选择创建一个项目、或者打开一个项目,来体验我们的插件功能
可以看到,我们刚刚定义的插件,在Tools的View PSI Structure…的下一个位置
点击Say Helo,idea弹窗展示了古老问候语,
同样的,我们也可以按刚刚设置的快捷键ctrl+K,弹出该信息
点击Ok,你将正式成为一名idea插件开发入门者
七、给插件添加Logo
官方文档: plugins.jetbrains.com/docs/intell…
命名规则:
pluginIcon.svg 默认图标。如果包含深色主题图标,那么该图标仅在亮色主题显示
pluginIcon_dark.svg 深色主题图标,该文件是可选的,如果存在该文件,那么深色主题使用该图标
文件位置:
放在项目resources/META-INF目录下
文件格式:
必须使用svg格式矢量图标,理想大小为2-3KB