IntelliJ平台 提供了扩展和扩展点的概念,允许插件与其他插件或IDE相互配合。
扩展点
如果你想允许其它扩展扩展你的插件的功能,你必须在插件中声明一个或一系列的扩展点。每个扩展点都要定义一个允许访问的类或接口。
扩展
如果你想要你的插件扩展其它插件或IntelliJ平台 的功能,你必须声明一个或一系列的扩展。
如何声明扩展或扩展点
您可以分别在插件配置文件plugin.xml
中的<extensions>
和<extensionPoints>
部分声明扩展和扩展点。
声明扩展点
在<extensionPoints>
部分, 插入一个子元素<extensionPoint>
,分别在name
、beanClass
和interface
属性定义扩展点名称和允许扩展插件功能的bean类名或接口名。
要阐明此过程,请查看以下plugin.xml
文件的示例代码片段:
<extensionPoints>
<extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1">
<extensionPoint name="MyExtensionPoint2" interface="MyPlugin.MyInterface">
</extensionPoints>
-
interface
属性设置一个要扩展此扩展点的插件必须要实现的接口; -
beanClass
属性设置一个使用@Attribute注解一个或多个属性的bean类。
要扩展此扩展点的插件会从plugin.xml
文件中读取这些属性。
要阐明此过程,查看以下使用以上plugin.xml
文件的示例 MyBeanClass1
bean类:
public class MyBeanClass1 extends AbstractExtensionPointBean {
@Attribute("key")
public String key;
@Attribute("implementationClass")
public String implementationClass;
public String getKey() {
return key;
}
public String getClass() {
return implementationClass;
}
}
注意:要声明一个设计用来访问
MyExtensionPoint1
扩展点的扩展 ,你的plugin.xml
文件必须包含具有设置适当值(查看以下示例)的key
和implementationClass
属性的<MyExtensionPoint1>
标签。
声明扩展
- 对于
<extensions>
元素,设置xmlns
(不推荐使用)或defaultExtensionNs
属性为以下值:-
com.intellij
,如果你的插件要扩展IntelliJ平台核心功能; -
{ID of a plugin}
,如果你的插件要扩展其它插件的功能。
-
- 新增
<extensions>
子元素。 子元素的名称必须与你想要访问的扩展点的名字匹配。 - 根据扩展点的类型:
- 如果扩展点使用
interface
属性声明,对于新增的子元素设置implementation
属性为实现指定接口的类名。 - 如果扩展点使用
beanClass
属性声明,对于新增的子元素设置所有在指定bean类用@Attribute 注解的属性。
- 如果扩展点使用
要阐明此过程,请查看以下plugin.xml
文件的示例代码片段,它定义了两个设计用来访问*IntelliJ平台 *appStarter
和applicationConfigurable
扩展点的扩展和一个设计用来访问测试插件MyExtensionPoint1
扩展点的扩展:
<!-- 声明访问IntelliJ平台扩展点的扩展
这些扩展点使用"interface"属性声明
-->
<extensions defaultExtensionNs="com.intellij">
<appStarter implementation="MyTestPackage.MyTestExtension1" />
<applicationConfigurable implementation="MyTestPackage.MyTestExtension2" />
</extensions>
<!--声明访问自定义插件扩展点的扩展
MyExtensionPoint1扩展点使用*beanClass*属性声明
-->
<extensions defaultExtensionNs="MyPluginID">
<MyExtensionPoint1 key="keyValue" implementationClass="MyTestPackage.MyClassImpl"></MyExtensionPoint1>
</extensions>
如何得到扩展点列表?
要获得IntelliJ平台 核心的可用扩展点,查看以下XML配置文件的<extensionPoints>
部分:
更多信息和示例
更多关于如何扩展IDEA核心的示例插件和详细说明,请参阅自定义IDEA设置对话框和创建工具窗口。