Plugin Compatibility with IntelliJ Platform Products
<! - TODO链接到sample_plugin文件 - >
所有基于_IntelliJ Platform_的产品,如IntelliJ IDEA,RubyMine,WebStorm等,都针对相同的底层平台API,一些产品共享在平台之上构建的功能,例如Java支持(IntelliJ IDEA)
和Android Studio)或数据库支持(IntelliJ IDEA Ultimate,DataGrip,PhpStorm等).
只要插件指定与其兼容的产品,就可以编写兼容多个产品的插件.
更具体地说,插件必须使用plugin.xml
文件中的[
出于依赖性的目的,可以将模块视为内置插件,作为产品的不可移除部分提供. 并非所有产品都定义和声明模块. 例如,PhpStorm没有自己的模块,但产品本身依赖于(并附带)PHP语言插件. 您也可以根据相同的语言插件使您的插件与PhpStorm兼容.
例如:
<idea-plugin>
...
<depends>com.intellij.modules.lang</depends>
...
</idea-plugin>
<! - TODO链接到sample_plugin文件 - >
如果插件在其plugin.xml
中不包含任何模块依赖关系标签,则它被假定为旧插件并且仅在IntelliJ IDEA中加载.
如果plugin.xml
包含一个或多个这样的标记,如果产品包含插件所依赖的所有**模块,则加载该插件.
目前,基于IntelliJ平台的所有产品均提供以下模块:
*com.intellij.modules.platform
*com.intellij.modules.lang
*com.intellij.modules.vcs
*com.intellij.modules.xml
*com.intellij.modules.xdebugger
这意味着插件可以声明对com.intellij.modules.vcs
的依赖,它可以在任何支持版本控制的产品中工作,并且因为所有产品目前都包含com.intellij.modules.vcs
模块,这个插件
将适用于所有产品.
这些特定产品中提供以下模块或内置插件:
Module or built-in plugin | Product |
---|---|
com.intellij.modules.java |
IntelliJ IDEA, Android Studio |
com.intellij.modules.ultimate |
IntelliJ IDEA Ultimate Edition |
com.intellij.modules.androidstudio |
Android Studio |
com.intellij.modules.appcode |
AppCode |
com.intellij.modules.cidr.lang |
AppCode, CLion |
com.intellij.modules.cidr.debugger |
AppCode, CLion, RubyMotion |
com.intellij.modules.clion |
CLion |
com.intellij.modules.database |
IntelliJ IDEA Ultimate Edition, DataGrip, GoLand, PhpStorm, PyCharm, Rider, RubyMine |
com.intellij.modules.go |
GoLand |
com.intellij.modules.python |
PyCharm |
com.intellij.modules.rider |
Rider |
com.intellij.modules.ruby |
RubyMine |
com.jetbrains.php |
PhpStorm (built-in plugin) |
com.intellij.modules.webstorm |
WebStorm |
##插件依赖项
如果要为插件添加依赖项,请使用插件名称/ID将“
##可选的依赖项
您还可以指定可选的依赖项. 如果您的插件适用于所有产品但提供了一些特定于Java的功能,则可以使用如下依赖项标记:
<depends optional="true" config-file="my-java-features.xml">
com.intellij.modules.java
</depends>
在将插件标记为与所有产品兼容之前,您应该验证它不使用任何特定于IntelliJ IDEA的API. 为此,创建一个指向RubyMine,PyCharm等安装的_IntelliJ Platform_ SDK,针对该SDK编译插件,并验证所有内容是否已编译. 访问开源许可页面,检查您的项目是否有资格获得JetBrains产品的免费开源许可.
JetBrains插件存储库根据上述规则自动检测与插件兼容的产品,并将其提供给这些产品的用户.
##平台兼容性
_IntelliJ Platform_和捆绑插件的API可以在发行版之间更改. 可能会破坏插件的主要更改列在IntelliJ平台和插件API中的不兼容更改页面上.
为了确保您的插件能够在您的目标平台上运行,您应该使用与您所定位的IntelliJ平台相同的开发版本.