各类IDE的插件开发

走着路睡觉大约 5 分钟

各类IDE的插件开发

所有基于IntelliJ Platform 的IDE开发插件都可以参考该文档。开发插件可以使用Java、Kotlin、或混合使用都行。开发完成以后,可以把插件打包并上传到 JetBrains Marketplaceopen in new window

本文档描述了IntelliJ IDEA 以外 IDE 的插件项目公共的配置属性。

配置Gradle项目 文档里可以查看Gradle项目配置

开始

参考使用Gradle创建项目 文档创建项目。

根据IDE的不同需要配置不同的 Gradle脚本(build.gradle)plugin.xml

  • Gradle脚本: 可以指定在哪些IDE中可以使用该插件,以及确定在开发过程中可以使用的API。
  • plugin.xml :指定插件依赖的modules 或 libraries

配置Gradle脚本

Gradle脚本中可以使用 intellij.type 属性指定目标IDE。例如:intellij.type = PY 表示插件只能在PyCharmopen in new window 中才能安装使用。配置如下:

注意:插件gradle-intellij-pluginopen in new window 并没有定义所有IDE的 intellij.type 属性。例如,Android Studioopen in new windowPhpStormopen in new window ,没有定义的可以使用 IntelliJ IDEAintellij.type 属性

提示

如果一个插件需要同时在多种IDE(例如: IntelliJ IDEA 和 PyCharm)中生效,可以不配置intellij.type 属性(不推荐,不配置表示对所有IDE都生效) ,也可以参考文档:插件兼容性

配置特定IDE的属性

插件gradle-intellij-pluginopen in new window 定义了IDE的 intellij.type 属性,通过这个属性可以配置插件生效的目标IDE。明确配置这个属性有2个好处:

  • 插件只在指定的IDE中才生效(除非指定了额外的插件依赖)

  • 测试运行插件时将直接启动指定的IDE。

如下示例表示开发的插件只对 对应版本的PyCharm 有效 ,插件gradle-intellij-pluginopen in new window 将自动获取对应版本的PyCharm 中有效的API,并使用这些API来构建插件实例。

使用IntelliJ IDEA的属性配置插件项目

如果插件gradle-intellij-pluginopen in new window 没有直接定义支持目标IDE ,可以使用IntelliJ IDEA ( Community 或 Ultimate Edition) 的配置。虽然这样会包含一些目标IDE不需要的API,但是方便测试找bug。

使用这种方式配置的时候,需要注意匹配目标IDE和IntelliJ IDEA的版本,版本之间的关系如下:

  • targetIDE :指的是安装插件的IDE,例如 Android Studio 或 PhpStorm

  • baseIntelliJPlatformVersion : 通过 intellij.version 属性设置,指的是目标IDE依赖的 IntelliJ Platform 版本。 IntelliJ Platform版本就是IntelliJ IDEA社区版(IntelliJ IDEA Community Edition)的版本。

为了API的兼容性, targetIDE.baseIntelliJPlatformVersion 默认就是开发插件使用的 IntelliJ Platform 版本

匹配IntelliJ Platform和targetIDE的版本

可以在targetIDEHelp->About 里查看它依赖的IntelliJ Platform 版本。如下图: # 号后面就是targetIDEBRANCH.BUILD.FIX(192.7142.41 :BRANCH=192,BUILD=7142,FIX=41) 版本, targetIDE的版本是 2019.2.4 ,构建targetIDEIntelliJ Platform 版本是 BRANCH.BUILD(192.7142)

如果在 Help->About 看不到版本,可以在插件文档open in new windowPart VIII — Product Specific 里找到对应的产品来确认版本。

Other IntelliJ IDEA Versionsopen in new window 页面里可以查找IDE对应的IntelliJ Platform版本。如果安装了 Toolbox Appopen in new window 当鼠标悬停在IDE上时,可以它的版本号。在这个示例中,可以在Other IntelliJ IDEA Versionsopen in new window 页面上找到IntelliJ IDEA Community Edition-2019.2.4 的构建版本号是 192.7142.36 。虽然 FIX 版本不一致(一个是41,一个是36),但他们是兼容的。因此,上图示例 PhpStorm 的版本信息如下:

  • targetIDEPhpStorm, 版本号是 192.7142.41,

  • baseIntelliJPlatformVersion (IntelliJ IDEA Community Edition) is build 192.7142.36

配置插件的plugin.xml需要用到上面获取到的信息,配置见下文

使用IntelliJ IDEA的属性配置Gradle脚本

主要修改2个地方: intellij extensionrunIde task

构建插件的配置必须配置在 intellij 里。虽然IntelliJ Platform是由 IntelliJ IDEA Community Edition(idea社区版) 定义的 ,但是 PHP 插件只兼容 IntelliJ IDEA Ultimate ,所以 intellij.type = 'IU' . intellij.version 是上文中的baseIntelliJPlatformVersion

需要在 intellij extension 的intellij.plugins 中添加依赖的插件或模块。其它依赖的插件和模块的信息可以在 插件文档open in new windowPart VIII — Product Specific 中找到。

最佳实践是修改 runIde task 以使用本地安装的targetIDE,即设置 runIde.ideDir 为安装的绝对路径。

详见下面示例配置:

配置plugin.xml

插件依赖的模块必须在plugin.xml进行配置。具体可以查看文档 插件兼容性 ,配置如下:

<idea-plugin>
    <!-- Targeting PhpStorm, 依赖 PHP 插件 -->
    <depends>com.jetbrains.php</depends>
    <!-- 必然依赖 intellij platform -->
    <depends>com.intellij.modules.platform</depends>
</idea-plugin>
上次编辑于:
贡献者: zhaojingbo
Loading...