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設置對話框和創建工具窗口。