告别Kotlin!用纯Java和Gradle在IDEA 2023.3上开发你的第一个插件(附完整配置流程)
纯Java开发IntelliJ IDEA插件从零到发布的完整指南对于习惯Java技术栈的开发者来说面对IntelliJ IDEA 2023.3默认的Kotlin插件项目模板可能会感到些许不适。本文将带你一步步将Kotlin项目净化为纯Java项目并完成从环境配置到打包测试的全过程。1. 环境准备与项目初始化在开始之前确保你的开发环境满足以下要求IntelliJ IDEA 2023.3社区版或旗舰版均可JDK 17这是IDEA插件开发的最低要求Gradle 7.6IDEA内置无需单独安装首先我们需要创建一个新的插件项目打开IDEA选择File → New → Project在左侧菜单中选择IntelliJ Platform Plugin确保Gradle被选中为构建工具输入项目名称和位置点击Create注意IDEA 2023.3默认会创建一个基于Kotlin的项目这是我们接下来需要修改的重点。2. 从Kotlin到Java的项目转换默认创建的项目包含Kotlin相关配置我们需要进行以下修改2.1 文件结构调整首先调整项目目录结构将src/main/kotlin目录重命名为src/main/java删除build.gradle.kts和settings.gradle.kts文件的.kts后缀2.2 修改build.gradle配置原始的build.gradle文件包含Kotlin相关配置我们需要将其转换为纯Java配置。以下是修改前后的关键对比修改前包含Kotlinplugins { id(java) id(org.jetbrains.kotlin.jvm) version 1.9.20 id(org.jetbrains.intellij) version 1.16.0 } // ...其他配置... tasks { withTypeJavaCompile { sourceCompatibility 17 targetCompatibility 17 } withTypeorg.jetbrains.kotlin.gradle.tasks.KotlinCompile { kotlinOptions.jvmTarget 17 } }修改后纯Javaplugins { id(java) id(org.jetbrains.intellij) version 1.16.0 } group com.example version 1.0-SNAPSHOT repositories { mavenCentral() } intellij { version 2023.3 type IC // IC社区版IU企业版 sandboxDir ${System.getProperty(user.home)}/idea-plugins-sandbox updateSinceUntilBuild false } tasks.withType(JavaCompile.class).configureEach(task - { task.getOptions().setEncoding(UTF-8); sourceCompatibility 17; targetCompatibility 17; }); tasks.patchPluginXml { sinceBuild.set(231) untilBuild.set(241.*) }关键修改点移除了Kotlin插件依赖简化了tasks配置添加了沙箱目录配置避免clean时丢失设置设置了编码和Java版本兼容性3. 配置IntelliJ Platform Plugin SDKIntelliJ Platform Plugin SDK是开发插件的核心环境配置步骤如下打开File → Project Structure在左侧选择Platform Settings → SDKs点击按钮选择IntelliJ Platform Plugin SDK选择你的IDEA安装目录通常是Applications或Program Files下确保JDK版本显示为17提示关联源代码是可选项可以帮助你查看平台代码但会显著增加索引时间。4. 创建你的第一个ActionAction是IDEA插件的基本交互单元下面创建一个简单的HelloWorld Action右键点击src/main/java目录选择New → Plugin DevKit → Action填写Action信息Action ID: com.example.ShowHelloActionClass Name: ShowHelloActionName: Show Hello选择添加到主菜单Tools组点击OK创建Action生成的Action类如下public class ShowHelloAction extends AnAction { Override public void actionPerformed(AnActionEvent e) { String message Hello from Java!; Messages.showInfoMessage(e.getProject(), message, Greeting); } }同时IDEA会在resources/META-INF/plugin.xml中自动注册这个Actionactions action idShowHelloAction classcom.example.ShowHelloAction textShow Hello descriptionShows a hello message add-to-group group-idToolsMenu anchorlast/ /action /actions5. 运行与测试插件测试插件有两种方式5.1 使用Gradle任务运行打开右侧Gradle面板展开Tasks → intellij双击runIde任务等待新IDEA实例启动使用build.gradle中配置的版本5.2 调试插件在代码中设置断点右键点击runIde任务选择Debug在新启动的IDEA实例中触发你的Action测试时你可以通过Tools菜单找到你的Action使用你设置的快捷键如果有通过Help → Find Action搜索Action名称6. 插件打包与发布完成开发后你可以将插件打包分享或发布到市场。6.1 打包插件执行Gradle的buildPlugin任务生成的zip文件位于build/distributions/your-plugin-name-1.0-SNAPSHOT.zip6.2 插件验证可选执行verifyPlugin任务可以检查插件在不同IDEA版本的兼容性./gradlew verifyPlugin注意这会下载多个IDEA版本进行测试耗时较长且占用磁盘空间。6.3 发布到市场要发布到JetBrains插件市场你需要注册JetBrains账号获取发布token配置gradle.properties或环境变量PUBLISH_TOKENyour_token_here执行publishPlugin任务7. 高级配置与优化7.1 沙箱目录配置沙箱目录存储插件运行时的临时数据和设置。默认在项目目录下容易被clean删除。建议配置到用户目录intellij { sandboxDir ${System.getProperty(user.home)}/idea-plugins-sandbox }7.2 多版本兼容性patchPluginXml任务控制插件兼容的IDEA版本范围tasks.patchPluginXml { sinceBuild.set(231) // 最低支持的IDEA版本2023.1 untilBuild.set(241.*) // 最高支持的IDEA版本2024.1.x }7.3 依赖其他插件如果你的插件依赖其他插件如Database工具可以在build.gradle中声明intellij { plugins [java, DatabaseTools] }8. 常见问题解决构建失败无法解析org.jetbrains.intellij确保使用的是最新的插件版本并检查网络连接id(org.jetbrains.intellij) version 1.16.0运行时报错不兼容的IDEA版本检查intellij.version和patchPluginXml.sinceBuild是否匹配插件在测试IDEA中不可见确保plugin.xml中正确注册了Action没有过滤掉Unknown features在测试IDEA的设置中内存不足错误增加Gradle内存设置在gradle.properties中添加org.gradle.jvmargs-Xmx2g9. 实用资源与进阶学习官方文档IntelliJ Platform SDK内置图标库IntelliJ Icons示例插件IntelliJ SDK Code SamplesUI组件Swing vs JCEF