Plateforme Eclipse
Manifeste des plug-ins
Version 0.90 - Dernière révision : 15 mars 2001
Les définitions des marques du manifeste ci-dessous utilisent divers jetons et identificateurs de noms. Pour supprimer toute ambiguïté, les règles de production qui s'y appliquent sont énoncées ci-dessous. En règle générale, tous les identificateurs font une distinction entre les minuscules et les majuscules.
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)
Le reste de cette section décrit la structure du fichier plugin.xml en tant que série de fragments DTD. Le fichier plugin.dtd présente la définition du DTD dans son intégralité.
<?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
>
L'élément <plugin> définit le corps du manifeste. Il peut en option contenir des définitions pour l'exécution du plug-in, des déclarations de tous les nouveaux points d'extension introduits par le plug-in, ainsi que la configuration des extensions fonctionnelles (configurées dans des points d'extension définis par d'autres plug-ins ou introduites par le plug-in en question). Les attributs <plugin> sont les suivants :
-
name : nom d'utilisateur affichable (traduisible) pour le plug-in.
-
id : identificateur unique du plug-in.
-
Afin de minimiser les conflits de noms potentiels, l'identificateur doit être dérivé de l'ID du domaine Internet du fournisseur (renversant les jetons du nom de domaine et annexant des jetons de nom supplémentaires, séparés par un point [.]).
Par exemple, le fournisseur ibm.com peut définir un identificateur de plug-in com.ibm.db2.
-
[production rule: PlugInId]
-
version : numéro de version de plug-in. Pour plus de détails, consultez org.eclipse.core.runtime.PluginVersionIdentifier.
Le format de version de plug-in est major.minor.service. Un changement dans un composant majeur est interprété comme un changement de version incompatible.
En revanche, un changement dans un composant mineur est interprété comme un changement de version compatible.
Un changement dans le composant de service est interprété comme un service cumulatif appliqué à la version mineure.
-
vendor-name : nom affichable à l'utilisateur du fournisseur de plug-in.
-
class : nom de la classe du plug-in. La classe doit être une sous-classe de org.eclipse.core.runtime.Plugin.
Dans la règle de construction DTD XML, l'élément* signifie aucune ou plusieurs occurrences de l'élément. L'élément? signifie aucune ou une occurrence de l'élément et l'élément+ (utilisé ci-dessous) signifie une ou plusieurs occurrences de l'élément. En fonction de la définition de <plugin> ci-dessus, ceci signifie par exemple qu'un plug-in contenant uniquement une définition d'exécution et aucune déclaration de point d'extension ou de configuration d'extension est valide (par exemple, des bibliothèques courantes dont dépendent d'autres plug-ins).
De même, un plug-in contenant uniquement des configurations d'extension et aucune exécution de point d'extension qui lui soit propre est également valide (par exemple, la configuration de classes fournies dans d'autres plug-ins dans des points d'extension déclarés dans d'autres plug-ins).
La section <requires> du manifeste déclare les dépendances envers d'autres plug-ins.
<!ELEMENT requires (import+)>
<!ELEMENT import EMPTY>
<!ATTLIST import
plugin CDATA #REQUIRED
version CDATA #IMPLIED
match (exact | compatible) "compatible"
export (true | false) "false"
>
Chaque dépendance est spécifiée à l'aide d'un élément <import>. Il contient les attributs suivants :
-
plugin : identificateur du plug-in requis.
-
version : spécification facultative de la version.
-
match : règle de correspondance de version. Ignorée si l'attribut de version n'est pas spécifié. Détermine si la dépendance est satisfaite uniquement avec un plug-in de la version spécifiée (peut être avec l'application d'un service supplémentaire) ou avec une version compatible (y compris une version mineure plus récente du plug-in).
-
export : spécifie si les classes de plug-in dépendantes sont rendues visibles (sont (ré)exportées) aux utilisateurs du plug-in. Par défaut, les classes dépendantes ne sont pas exportées (ne sont pas rendues visibles).
La section <runtime> du manifeste contient une définition d'une ou de plusieurs bibliothèques qui constituent l'exécution du plug-in.
Les bibliothèques référencées sont utilisées par les mécanismes d'exécution de la plateforme (le chargeur de classe du plug-in) pour charger et exécuter le code correct requis par le plug-in.
<!ELEMENT runtime (library+)>
<!ELEMENT library (export*)>
<!ATTLIST library
name CDATA #REQUIRED
>
<!ELEMENT export EMPTY>
<!ATTLIST export
name CDATA #REQUIRED
>
L'élément <runtime> n'a pas d'attribut.
Les éléments <library> définissent collectivement l'exécution du plug-in. Un élément <library> doit être au moins spécifié. Chaque élément <library> comporte les attributs suivants :
-
name : chaîne de référence à un fichier ou répertoire de bibliothèque contenant des classes (par rapport au répertoire d'installation du plug-in).
Les références de répertoire doivent contenir un séparateur de fichier de fin.
Chaque élément <library> peut spécifier la portion de bibliothèque à exporter.
Les règles d'exportation sont spécifiées en tant que jeu de masques d'exportation.
Par défaut, (aucune règle d'exportation spécifiée), la bibliothèque est considérée comme étant privée. Les éléments <export> ont les attributs suivants :
-
name : spécifie le masque d'exportation. Les valeurs valides sont les suivantes :
-
* : indique que tout le contenu de la bibliothèque est exporté (publique).
-
package-name.* : indique que toutes les classes du package spécifié sont exportées.
Les règles de correspondance sont similaires aux instructions d'importation Java.
-
class-name : nom de classe Java complet qualifié.
L'architecture de la plateforme est basée sur la notion de points d'extension configurables.
La plateforme définit un jeu de points d'extension qui couvre les tâches d'extension de la plateforme et du bureau (par exemple, l'ajout d'actions de menu, la contribution d'un éditeur imbriqué). En plus des points d'extension prédéfinis, chaque plug-in fourni peut déclarer des points d'extension supplémentaires. En déclarant un point d'extension, le plug-in signale essentiellement la capacité de configurer la fonction du plug-in avec des extensions fournies de l'extérieur. Par exemple, le plug-in Page Builder peut déclarer un point d'extension pour l'ajout de nouveaux DTC dans sa palette de générateur. Ceci signifie que Page Builder a défini une architecture pour ce qui est censé être un DTC et a implémenté le code qui recherche les extensions DTC ayant été configurées dans les points d'extension.
<!ELEMENT extension-point EMPTY>
<!ATTLIST extension-point
name CDATA #REQUIRED
id CDATA #REQUIRED
schema CDATA #IMPLIED
>
L'élément <extension-point> comporte les attributs suivants :
-
name : nom d'utilisateur affichable (traduisible) pour le point d'extension.
-
id : jeton d'ID simple, unique dans le plug-in. Le jeton ne peut contenir de point (.) ni de blanc.
-
[production rule: ExtensionPointId]
-
schema spécification du schéma de ce point d'extension. Les détails exacts sont définis dans le PDE. Le schéma n'est pas couramment utilisé lors de l'exécution. La référence est un nom de fichier relatif à l'emplacement d'installation du plug-in.
Les extensions réelles sont configurées dans des points d'extension (prédéfinis ou nouvellement déclarés dans le plug-in) à la section <extension>. Les informations de configuration sont spécifiées au format XML, entre les marques <extension> et </extension>. La plateforme ne spécifie pas le format réel de la marque de configuration (autre que devant être du XML syntaxiquement correct). Les marques sont définies par le fournisseur du plug-in ayant déclaré le point d'extension. La plateforme n'interprète pas réellement les marques de configuration. Elle transmet simplement les informations de configuration au plug-in en tant que part du traitement du point d'extension (au moment où le point d'extension demande la totalité de ses extensions configurées).
<!ELEMENT extension ANY>
<!ATTLIST extension
point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED
>
L'élément <extension> comporte les attributs suivants :
-
point : référence à un point d'extension en cours de configuration. Le point d'extension peut être l'un de ceux définis dans ce plug-in ou dans un autre.
-
[production rule: ExtensionPointReference]
-
id : identificateur facultatif de cette instance de configuration de point d'extension. Il est utilisé par les points d'extension qui nécessitent d'identifier de manière unique (plutôt que d'énumérer uniquement) les extensions spécifiques configurées.
L'identificateur est spécifié en tant que jeton simple et unique dans la définition du plug-in déclarant. Lorsqu'il est utilisé globalement, l'identificateur d'extension est qualifié par l'identificateur de plug-in.
-
[production rule: ExtensionId]
-
name : nom d'utilisateur affichable (traduisible) pour l'extension.
Important : le contenu de l'élément <extension> est déclaré à l'aide de la règle ANY. Ceci signifie que tout XML syntaxiquement correct peut être spécifié dans la section de configuration de l'extension (entre les marques <extension> et </extension>).