各类IDE的插件开发
各类IDE的插件开发
所有基于IntelliJ Platform 的IDE开发插件都可以参考该文档。开发插件可以使用Java、Kotlin、或混合使用都行。开发完成以后,可以把插件打包并上传到 JetBrains Marketplace。
本文档描述了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 表示插件只能在PyCharm 中才能安装使用。配置如下:
注意:插件gradle-intellij-plugin 并没有定义所有IDE的 intellij.type 属性。例如,Android Studio 和 PhpStorm ,没有定义的可以使用 IntelliJ IDEA 的intellij.type 属性
提示
如果一个插件需要同时在多种IDE(例如: IntelliJ IDEA 和 PyCharm)中生效,可以不配置intellij.type 属性(不推荐,不配置表示对所有IDE都生效) ,也可以参考文档:插件兼容性
配置特定IDE的属性
插件gradle-intellij-plugin 定义了IDE的 intellij.type 属性,通过这个属性可以配置插件生效的目标IDE。明确配置这个属性有2个好处:
插件只在指定的IDE中才生效(除非指定了额外的插件依赖)
测试运行插件时将直接启动指定的IDE。
如下示例表示开发的插件只对 对应版本的PyCharm 有效 ,插件gradle-intellij-plugin 将自动获取对应版本的PyCharm 中有效的API,并使用这些API来构建插件实例。
使用IntelliJ IDEA的属性配置插件项目
如果插件gradle-intellij-plugin 没有直接定义支持目标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的版本
可以在targetIDE的 Help->About 里查看它依赖的IntelliJ Platform 版本。如下图: # 号后面就是targetIDE的 BRANCH.BUILD.FIX(192.7142.41 :BRANCH=192,BUILD=7142,FIX=41) 版本, targetIDE的版本是 2019.2.4 ,构建targetIDE 的IntelliJ Platform 版本是 BRANCH.BUILD(192.7142) 。
如果在 Help->About 看不到版本,可以在插件文档 的 Part VIII — Product Specific 里找到对应的产品来确认版本。
在 Other IntelliJ IDEA Versions 页面里可以查找IDE对应的IntelliJ Platform版本。如果安装了 Toolbox App 当鼠标悬停在IDE上时,可以它的版本号。在这个示例中,可以在Other IntelliJ IDEA Versions 页面上找到IntelliJ IDEA Community Edition-2019.2.4 的构建版本号是 192.7142.36 。虽然 FIX 版本不一致(一个是41,一个是36),但他们是兼容的。因此,上图示例 PhpStorm 的版本信息如下:
targetIDE 是 PhpStorm, 版本号是 192.7142.41,
baseIntelliJPlatformVersion (IntelliJ IDEA Community Edition) is build 192.7142.36
配置插件的plugin.xml需要用到上面获取到的信息,配置见下文
使用IntelliJ IDEA的属性配置Gradle脚本
主要修改2个地方: intellij extension 和 runIde task 。
构建插件的配置必须配置在 intellij 里。虽然IntelliJ Platform是由 IntelliJ IDEA Community Edition(idea社区版) 定义的 ,但是 PHP 插件只兼容 IntelliJ IDEA Ultimate ,所以 intellij.type = 'IU' . intellij.version 是上文中的baseIntelliJPlatformVersion
需要在 intellij extension 的intellij.plugins 中添加依赖的插件或模块。其它依赖的插件和模块的信息可以在 插件文档 的 Part 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>