Eclipse プラットフォーム
プラグイン・マニフェスト
バージョン 0.90 - 最終改訂日付、2000 年 3 月 15 日
以下のマニフェスト・マークアップ定義は、多数のネーミング・トークンおよび ID を使用します。
次の規則は、あいまいさを除去するための運用規則です (以下のテキストで参照される部分)。
一般的に、すべての ID は大文字小文字の区別があります。
SimpleToken := ('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)
本章では以下に、一連の DTD フラグメントとしての plugin.xml ファイル構造を説明します。
ファイル 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
>
<プラグイン>・エレメントはマニフェストの本体を定義します。この定義にはオプションで、(他のプラグインによって定義された、
またはこのプラグインによって導入された拡張ポイントに構成された) 拡張機能だけでなく、
プラグイン・ランタイム、プラグインによって導入されるすべての新規拡張ポイントが含まれます。
<プラグイン>属性は以下のとおりです。
-
name - プラグインのユーザー表示可能 (変換可能) 名
-
id - プラグインの固有 ID
-
ネーミング・コリジョンの可能性を最小限に押さえるには、ID は提供ベンダーのインターネット・ドメイン ID から (ドメイン・ネーム・トークンをリバースして、ドット [.] で区分された追加ネーム・トークンを付加することで) 派生させる必要があります。
たとえば、ベンダー ibm.com は、プラグイン ID 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 ? は、
そのエレメントのゼロまたは 1 つのオカレンスを意味しています。element + (以下で使用) は、
そのエレメントの 1 つまたは複数のオカレンスを意味しています。上記の <plugin> 定義に基づいて、
たとえばこれは、ただ 1 つのランタイム定義を持ち、拡張ポイント宣言、
または拡張構成を持たないプラグインが有効であることを意味しています (たとえば、
他のプラグインに依存する共通ライブラリー)。
同様に、拡張構成のみを持ち、独自のランタイムまたは拡張ポイントを持たないプラグインも有効です (たとえば、他のプラグインで宣言された拡張ポイントに、他のプラグインに送信されたクラスを構成します)。
マニフェストの <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 - 必要なプラグインの ID
-
version - オプションのバージョン指定
-
match - バージョン・マッチング規則。version 属性が指定されていない場合は無視されます。
指定されたバージョン (適用されている追加サービスも含めた) のプラグインでのみ依存性が満足されているかどうか、
またはすべての互換性のあるバージョン (プラグインの最も直近のマイナー・バージョンを含む) で依存性が満足されているかどうかを判別します。
-
export - このプラグインのユーザーに依存プラグイン・クラスを可視にする ((再度) エクスポートする) かどうかを指定します。
デフォルトでは、依存クラスはエクスポートされません (可視になっていません)
マニフェストの <runtime> section は、
プラグイン・ランタイムを構成する 1 つまたは複数のライブラリーの定義を含んでいます。
参照ライブラリーはプラットフォーム実行メカニズム
(プラグイン・クラス・ローダー) が使用し、プラグインが必要とする正しいコードをロードして実行します。
<!ELEMENT runtime (library+)>
<!ELEMENT library (export*)>
<!ATTLIST library
name CDATA #REQUIRED
>
<!ELEMENT export EMPTY>
<!ATTLIST export
name CDATA #REQUIRED
>
The <runtime> エレメントには属性はありません。
<library> エレメントはプラグイン・ランタイムを集合的に定義します。少なくとも 1 つ <library> が指定されている必要があります。それぞれの <library> エレメントには以下の属性があります。
-
name - クラスを含むライブラリー・ファイルまたはディレクトリーへの参照ストリング (プラグイン・インストール・ディレクトリーとの相対)。ディレクトリー参照は、トレーラー・ファイル分離文字を含んでいる必要があります。
それぞれの <library> エレメントは、ライブラリーのどの部分がエクスポートされるべきかを指定できます。
エクスポート規則は一連のエクスポート・マスクとして指定されます。デフォルト (指定されたエクスポート規則がない) では、ライブラリーは専用ライブラリーとして扱われます。<export> エレメントには以下の属性があります。
-
name - エクスポート・マスクを指定します。有効な値は以下の通りです。
-
* - ライブラリーのすべての内容はエクスポートされます (共用)
-
package-name.* - 指定されたパッケージのすべてのクラスはエクスポートされます。
マッチング規則は Java インポート・ステートメントの規則と同じです。
-
class-name - 完全修飾 Java クラス名
プラットフォームのアーキテクチャーは構成可能な拡張ポイントの概念に基づいています。
プラットフォーム自体は、プラットフォームおよびデスクトップを拡張するタスクを行う一連の拡張ポイントを事前定義します (たとえば、メニュー・アクションの追加、組み込みエディターの追加)。事前定義された拡張ポイントに加えて、
提供されているそれぞれのプラグインは、追加の拡張ポイントを宣言します。
原則的にプラグインは、拡張ポイントを宣言することによって、プラグイン機能を外部的に提供された拡張機能を使って構成する機能を公示します。
たとえば、ページ・ビルダー・プラグインは、
新規 Design Time Controls (DTC) をそのビルダー・パレットに追加する拡張ポイントを宣言できます。
これは、ページ・ビルダーが、DTC にする対象に対するアーキテクチャーを定義し、
拡張ポイントの中に構成された DTC 拡張機能を検索するコードをインプリメントしていることを意味しています。
<!ELEMENT extension-point EMPTY>
<!ATTLIST extension-point
name CDATA #REQUIRED
id CDATA #REQUIRED
schema CDATA #IMPLIED
>
<extension-point> エレメントには以下の属性があります。
-
name - 拡張ポイントのユーザー表示可能 (変換可能) 名
-
id - 単純な ID トークンで、このプラグインの中で固有です。トークンはドット (.) または空白文字を含むことができません。
-
[運用規則 : ExtensionPointId]
-
schema - この拡張ポイントのスキーマ仕様。正確な詳細は、
プラグイン開発環境 (PDE) の一部として定義されています。
スキーマは現在実行時に使用されていません。参照はプラグイン・インストール・ロケーションとの相対ファイル名です。
実際の拡張機能は、<extension> section の拡張ポイント (事前定義済み、またはこのプラグインで新規に宣言済み) の中に構成されています。構成情報は、
<extension> および </extension> のタグ間で形式に従った XML として指定されます。プラットフォームは、(XML を形式に従わせるという要件以外は) 構成マークアップの実際のフォームを指定しません。マークアップは、拡張ポイントを宣言したプラグインのサプライヤーによって定義されます。
プラットフォームは、実際には構成マークアップを解釈しません。
単に、プラットフォームは、(拡張ポイント・ロジックがその構成済み拡張機能のすべてを照会する時に) 構成情報を拡張ポイント処理の一部としてプラグインに渡すだけです。
<!ELEMENT extension ANY>
<!ATTLIST extension
point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED
>
<extension> エレメントには以下の属性があります。
-
point - 構成される拡張ポイントへの参照。拡張ポイントは、このプラグインまたは他のプラグインで定義されたポイントである場合があります。
-
[運用規則 : ExtensionPointReference]
-
id - オプションで、この拡張ポイントの構成インスタンスの ID。
これは、特定の構成済み拡張機能を一意的に識別する (ただ単に列挙としてでなく) 必要がある拡張ポイントによって使用されます。ID は、
宣誓するプラグインの定義の中で一意的に単純なトークンとして指定されます。
グローバルに使用されると、拡張機能 ID はプラグイン ID によって修飾されます。
-
name - 拡張機能のユーザー表示可能 (変換可能) 名
重要 : <extension> エレメントの内容は、ANY 規則を使用して宣言されます。これは、
すべての形式に従った XML は、拡張構成 section (<extension> および </extension> タグ間) に指定可能であるということを意味しています。