基于 intellij-platform-plugin-template 开发IDEA插件注意事项
自己开发了一个简单的插件,主要功能是将Java类转为Json Schema,选中多个Java文件,可以生成对应Json Schema的Json文件,目的是为了方便导入到Api fox中的数据模型中,后端就不用去手写每个字段什么意思了.
插件名称为:Java Generate Json Schema (还在审核…)
1. 开发语言由 kotlin 改为 java
重命名 src/main/ 下的 kotlin 改为 java
2. 没有 PsiJava 相关的 API ,如PsiClass 、PsiJavaFile等
修改 根目录下的 gradle.properties
platformBundledPlugins = com.intellij.java
3. 设置 调试 IDEA 为本地已经安装的
修改 根目录下的 build.gradle.kts 当中的 dependencies.intellijPlatform
dependencies {
// ... 省略部分代码
intellijPlatform {
// create(providers.gradleProperty("platformType"), providers.gradleProperty("platformVersion"), true)
local("C:\\Program Files\\JetBrains\\IntelliJ IDEA 2024.3.1.1")
// ...省略部分代码
}
}
4. 打包后,可用的插件包路径在 build/distributions 下 ,是zip文件
5. 上传到插件应用市场,提示:Invalid plugin descriptor ‘description’. The plugin description is shorter than 40 characters and/or the plugin description contains non-Latin characters.
查看 README.md 文件当中的 标签中的内容 是否是英文并且大于40个字符串。因为在build.gradle.kts配置了,会读取这个标签里面的内容作为插件描述
就是这一段:
description = providers.fileContents(layout.projectDirectory.file("README.md")).asText.map {
val start = "<!-- Plugin description -->"
val end = "<!-- Plugin description end -->"
}
6. 使用2025版本的IDEA,action 配置 没有效果,调试后,没有对应的操作入口
https://plugins.jetbrains.com/docs/intellij/creating-actions-tutorial.html#creating-a-custom-action
When targeting IntelliJ Platform 2022.3 or later, AnAction.getActionUpdateThread() must be implemented
针对 IntelliJ 平台 2022.3 或更高版本时,必须实现 AnAction.getActionUpdateThread()
@Override
public @NotNull ActionUpdateThread getActionUpdateThread() {
return ActionUpdateThread.BGT;
}
AnAction.getActionUpdateThread() 返回 ActionUpdateThread ,它指定 update() 方法是在后台线程(BGT)上调用还是在事件调度线程(EDT)上调用。首选方法是在 BGT 上运行更新,其优点是保证对 PSI、虚拟文件系统(VFS)或项目模型的应用程序范围的读取访问。在 BGT 上运行更新会话的操作不应该直接访问 Swing 组件层次结构。相反,指定在 EDT 上运行更新的操作不能访问 PSI、VFS 或项目数据,但可以访问 Swing 组件和其他 UI 模型。
https://plugins.jetbrains.com/docs/intellij/action-system.html#anactiongetactionupdatethread