Eclipse 平台
插件清单
版本 0.90 — 上一次修订时间:2001 年 3 月 15 日
下面的清单标记定义使用了各种命名标记和标识符。要消除岐义,使用以下一些生产规则[在下面的文本中将引用这些规则]。通常情况下,所有标识符都是区分大小写的。
SimpleToken := sequence of characters from ('a-z','A-Z','0-9')
ComposedToken := SimpleToken | (SimpleToken '.' ComposedToken)
JavaClassName := ComposedToken
PlugInId := ComposedToken
PlugInPrereq := PlugInId | 'export' PlugInId
ExtensionId := SimpleToken
ExtensionPointId := SimpleToken
ExtensionPointReference := ExtensionPointID | (PlugInId '.' ExtensionPointId)
本节余下的部分将 plugin.xml 文件结构描述为一系列
DTD 段。plugin.dtd 文件提供了全部 DTD 定义。<?xml encoding="US-ASCII"?>
<!ELEMENT plugin (requires?, runtime?, extension-point*, extension*)>
<!ATTLIST plugin
name CDATA #REQUIRED
id CDATA #REQUIRED
version CDATA #REQUIRED
vendor-name CDATA #IMPLIED
class CDATA #IMPLIED
>
<plugin> 元素定义清单的主体。它可选择包含插件运行时的定义、由该插件引入的任何新扩展点的声明以及功能扩展的配置(配置到由其他插件定义的或由此插件引入的扩展点中)。<plugin> 属性如下所示:
-
name — 插件的用户可显示(可转换)名称
-
id — 插件的唯一标识符。
-
要使发生名称冲突的可能性降至最小,应从供应商的因特网域标识派生标识符(撤销域名标记并追加以点[.]分隔的附加名称标记)。例如,供应商 ibm.com 可定义插件标识符 com.ibm.db2
-
[生产规则:PlugInId]
-
version — 插件版本号。有关详细信息,参见
org.eclipse.core.runtime.PluginVersionIdentifier。插件版本格式是
major.minor.service。主要组件中的更改被解释为不兼容的版本更改。次要组件中的更改被解释为兼容的版本更改。服务组件中的更改被认为是应用于次要版本的累积服务。
-
vendor-name — 供应插件的供应商的用户可显示名称。
-
class — 此插件的插件类名称。该类必须是 org.eclipse.core.runtime.Plugin
的子类。
XML DTD 构造规则 element* 表示元素的零次或更多次出现;element? 表示元素的零次或一次出现;而 element+(在下面使用)表示元素的一次或多次出现。例如,根据上述的
<plugin> 定义,这表示只包含一个运行时定义且没有扩展点声明或扩展配置的插件是有效的(例如,其他插件所依赖的公共库)。类似地,
仅包含扩展配置且无它自己的运行时或扩展点的插件也是有效的(例如,将在其他插件中交付的类配置到在其他插件中声明的扩展点中)。清单的 <requires> 部分声明其他插件上的任何从属项。
<!ELEMENT requires (import+)>
<!ELEMENT import EMPTY>
<!ATTLIST import
plugin CDATA #REQUIRED
version CDATA #IMPLIED
match (exact | compatible) "compatible"
export (true | false) "false"
>
每个从属项都是使用 <import> 元素指定的。它包含下列属性:
-
plugin — 必需插件的标识符
-
version — 可选版本规范
-
match — 符合规则的版本。忽略该项(如果未指定版本属性的话)。确定从属项是只适合指定版本(可能还带有所应用的附加服务)的插件,还是可适合任何兼容版本(包括插件较新的次要版本)
-
export — 指定是否使从属插件类对此插件的用户是可视的(即将该类(重新)导出)。缺省情况下,不导出从属类(不可视)。
清单的 <runtime> 部分包含组成插件运行时的一个或多个库的定义。所引用的库由平台执行机制(插件类装入程序)用来装入并执行插件所必需的正确代码。<!ELEMENT runtime (library+)>
<!ELEMENT library (export*)>
<!ATTLIST library
name CDATA #REQUIRED
>
<!ELEMENT export EMPTY>
<!ATTLIST export
name CDATA #REQUIRED
>
<runtime> 元素不具有属性。<library> 元素共同定义插件运行时。必须指定至少一个
<library>。每一个 <library> 元素都具有下列属性:
-
name — 对包含类的库文件或目录的字符串引用(相对于插件安装目录)。目录引用必须包含结尾文件分隔符。
每一个 <library> 元素都可指定应导出库的哪个部分。将导出规则指定为一组导出掩码。缺省情况下(未指定任何导出规则),库被认为是专有的。<export> 元素具有下列属性:
-
name — 指定导出掩码。有效值为:
-
package-name.* — 指示导出指定包中的所有类。匹配规则与 Java import 语句的规则相同。
-
class-name — 全限定 java 类名
平台的体系结构是基于可配置扩展点的概念的。平台本身预定义一组涉及扩展平台和桌面的任务(例如:添加菜单操作以及添加嵌入的编辑器)的扩展点。除预定义的扩展点之外,每一个所提供的插件还可声明附加的扩展点。通过声明扩展点,插件实质上表明了具有用外部提供的扩展来配置插件功能的能力。例如,“页面构建器”插件可声明一个扩展点以将新的“设计时间控件”(DTC)添加到其构建器选用板中。这意味着
“页面构建器”为 DTC 的含义定义了一个体系结构并实现了查找已配置到扩展点中的
DTC 扩展的代码。<!ELEMENT extension-point EMPTY>
<!ATTLIST extension-point
name CDATA #REQUIRED
id CDATA #REQUIRED
schema CDATA #IMPLIED
>
<extension-point> 元素具有下列属性:
-
name — 扩展点的用户可显示(可转换)名称
-
id — 简单的标识标记,在此插件中是唯一的。该标记不能包含点(.)或空格。
-
schema — 用于此扩展点的模式规范。目前,正在将精确的详细信息定义为“插件开发环境”(PDE)的一部分。当前未在运行时使用该模式。引用是相对于插件安装位置的文件名。
将实际扩展配置到 <extension> 部分中的扩展点(它们是预先定义的或最近在此插件中声明的)中。将配置信息指定为 <extension>
与 </extension> 标记之间包含的结构良好的 XML。平台不指定实际的配置标记格式(只要求它是结构良好的
XML)。标记由声明扩展点的插件的供应商定义。平台不实际解释配置标记。它只是将配置信息传送到作为扩展点处理(在扩展点逻辑查询它的所有已配置扩展时)一部分的插件中。<!ELEMENT extension ANY>
<!ATTLIST extension
point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED
>
<extension> 元素具有下列属性:
-
point — 对正在配置的扩展点的引用。扩展点可以是在此插件或另一插件中定义的扩展点。
-
[生产规则:ExtensionPointReference]
-
id — 此扩展点配置实例的可选标识符。这是由需要唯一标识(而不只是枚举)特定的已配置扩展的扩展点使用的。将标识符指定为在声明插件的定义内为唯一的简单记号。当以全局方式使用该扩展标识符时,它是由插件标识符限定的。
-
name — 扩展的用户可显示(可转换)名称
要点:<extension> 元素的内容是使用
ANY 规则声明的。这表示任何结构良好的
XML 都可在扩展配置部分(在 <extension> 与 </extension> 标记之间)内指定。