当前位置: 首页 > news >正文

JetBrains IDE插件开发及发布

JetBrains 插件市场

Developers Page | JetBrains Marketplace

Discover JetBrains Marketplace | JetBrains Marketplace Documentation

环境准备
安装 IntelliJ IDEA(社区版或旗舰版),确保版本与目标 IDE(如 WebStorm、PyCharm 等)兼容。通过 IntelliJ IDEA 的插件开发模板创建新项目,选择 GradleDevKit(推荐 Gradle 作为构建工具)。

项目结构

  • src/main/resources/META-INF/plugin.xml:插件核心配置文件,定义插件名称、版本、依赖等。
  • src/main/javasrc/main/kotlin:主要代码目录,支持 Java 或 Kotlin 开发。
  • build.gradle.ktsbuild.gradle:Gradle 构建脚本,声明依赖和打包配置。

核心开发步骤

  1. 定义插件入口
    plugin.xml 中配置扩展点(如 applicationServiceprojectService),注册自定义组件。

    <extensions defaultExtensionNs="com.intellij"><applicationService serviceInterface="com.example.MyService" serviceImplementation="com.example.MyServiceImpl"/>
    </extensions>
    

  2. 实现功能逻辑
    通过 IntelliJ Platform SDK 提供的 API 访问 IDE 功能(如编辑器操作、文件系统)。例如,创建一个动作(Action):

    class MyAction : AnAction() {override fun actionPerformed(e: AnActionEvent) {e.project?.showMessage("Hello from plugin!")}
    }
    

  3. 调试插件
    使用 Gradle 任务 runIde 启动沙盒环境测试插件。通过 Run/Debug Configurations 配置自定义 IDE 实例。


JetBrains 插件发布

准备工作

  1. 注册 JetBrains 账号并申请发布权限(JetBrains Marketplace)。
  2. plugin.xml 中填写完整的元数据(描述、版本号、兼容性范围)。

打包插件

  • Gradle 方式:执行 buildPlugin 任务生成 .zip 文件(位于 /build/distributions)。
  • 手动方式:通过菜单 Build > Prepare Plugin Module for Deployment 生成 .jar 文件。

发布流程

  1. 登录 JetBrains Marketplace,进入 Upload Plugin 页面。
  2. 上传插件包并填写更新日志、定价模型(免费或付费)。
  3. 提交后等待审核(通常需 1-3 个工作日)。

更新插件
修改 plugin.xml 中的版本号,重新打包并上传。Marketplace 会自动提示用户更新。


注意事项

  • 兼容性:在 plugin.xml 中指定支持的 IDE 版本范围(如 <idea-version since-build="203" until-build="223.*"/>)。
  • 依赖管理:通过 Gradle 声明第三方库依赖,避免冲突。
  • 文档:提供清晰的用户指南和代码注释以提升审核通过率。

参考官方文档:IntelliJ Platform Plugin SDK 获取最新 API 和最佳实践。

http://www.dtcms.com/a/304785.html

相关文章:

  • java导入pdf(携带动态表格,图片,纯java不需要模板)
  • 15K的Go开发岗,坐标北京
  • 第七章 MCP协议
  • Wndows Docker Desktop-Unexpected WSL error错误
  • 报告研读——80页数据资产化实践指南报告-2024【附全文阅读】
  • 天铭科技×蓝卓 | “1+2+N”打造AI驱动的汽车零部件行业智能工厂
  • 为什么全景渲染更耗时?关键因素解析
  • 3D游戏引擎的“眼睛“:相机系统深度揭秘与技术实现
  • 【ARM】FPU,VFP,ASE,NEON,SVE...是什么意思?
  • Synopsys:消息管理
  • 2025年1中科院1区顶刊SCI-投影迭代优化算法Projection Iterative Methods-附完整Matlab免费代码
  • Vivado常用IP
  • GaussDB 数据库架构师修炼(十) 性能诊断常用视图
  • Rust基础-part8-模式匹配、常见集合
  • 嵌入式开发问题:warning: #177-D: variable “key“ was declared but never referenced
  • 2025年Solar应急响应公益月赛-7月笔记ing
  • Generative AI in Game Development
  • Class24AlexNet
  • STM32——HAL库
  • HBase、MongoDB 和 Redis 的区别详解
  • 图片查重从设计到实现(7) :使用 Milvus 实现高效图片查重功能
  • Redis内存使用耗尽情况分析
  • 达梦数据库DM用户管理-三权分立与四权分立,用户创建与维护,用户与模式的关系,用户相关权限
  • Spring Boot 简单接口角色授权检查实现
  • Rust 实战二 | 开发简易版命令行工具 grep
  • uv工具使用记录(Linux系统)
  • 【C++算法】75.优先级队列_数据流中的第 K 大元素
  • React 中获取当前路由信息
  • Android权限机制详解:保障用户隐私与应用安全
  • pytorch格式转华为昇腾的om格式