IDEA插件开发专题一快速入门

2023年 8月 18日 60.2k 0

前言

用了这么多年的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插件工程创建

20221203121047

上图是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:

20221203121306

填写项目名和项目保存地址

Finish

完成后等待Idea打开项目

三、Idea工程结构介绍

20221203121404

.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介绍:

20221203121421

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 文件配置 ;

20221203121648
20221203121537

五、第一行插件代码

5.1 添加Action

20221203121706

通过快捷创建Action的方式,可以自动生成对应的类,并且将Action添加到plugin.xml的action中

除了这种方式,也可以手动创建Java类,并配置plugin.xml文件

5.2 填写Action信息

创建Action需要配置的基本信息

20221203121751

填写完成后,点击Ok按钮

5.3 实现弹窗Hello World

我们在actionPerformed中实现触发action之后的功能代码

这里通过Messages.showInfoMessage接口,弹出一个信息提示弹窗,展示西方古老的问候语Hello world!

20221203121833

20221203121848

六、插件运行

如果我们是新建的插件工程,那么字tools bar工具栏可以直接点击按钮运行

20221203121916

如果我们是打开的Gradle工程,可能tool bar没有信息
我们可以通过gradle runIde命令直接启动运行插件

20221203121927

插件点击运行后,会自动打开一个调试插件用的idea窗口

这个调试的idea是社区版的

我们可以选择创建一个项目、或者打开一个项目,来体验我们的插件功能

20221203121941

可以看到,我们刚刚定义的插件,在Tools的View PSI Structure…的下一个位置
20221203122001

点击Say Helo,idea弹窗展示了古老问候语,
同样的,我们也可以按刚刚设置的快捷键ctrl+K,弹出该信息
点击Ok,你将正式成为一名idea插件开发入门者

20221203122011

七、给插件添加Logo

官方文档: plugins.jetbrains.com/docs/intell…

命名规则:

pluginIcon.svg 默认图标。如果包含深色主题图标,那么该图标仅在亮色主题显示
pluginIcon_dark.svg  深色主题图标,该文件是可选的,如果存在该文件,那么深色主题使用该图标

文件位置:
放在项目resources/META-INF目录下

文件格式:

必须使用svg格式矢量图标,理想大小为2-3KB

20221203122114

参考资料

  • 官方文档
  • 相关文章

    JavaScript2024新功能:Object.groupBy、正则表达式v标志
    PHP trim 函数对多字节字符的使用和限制
    新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
    使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
    为React 19做准备:WordPress 6.6用户指南
    如何删除WordPress中的所有评论

    发布评论