Plataforma Eclipse
Manifiesto de Plug-in
Versión 0.90 - Última revisión 15 marzo 2001
Las definiciones de marcadores manifiestos abajo indicadas utilizan varios identificadores y símbolos de denominación. Para eliminar la ambigüedad, le presentamos algunas reglas de producción para éstos [están relacionadas en el texto presentado más abajo]. En general, todos los identificadores son sensibles a las mayúsculas y minúsculas.
SimpleToken := secuencia de caracteres desde ('a-z','A-Z','0-9')
ComposedToken := SimpleToken | (SimpleToken '.' ComposedToken)
tJavaClassName := ComposedToken
PlugInId := ComposedToken
PlugInPrereq := PlugInId | 'export' PlugInId
ExtensionId := SimpleToken
ExtensionPointId := SimpleToken
ExtensionPointReference := ExtensionPointID | (PlugInId '.' ExtensionPointId)
El resto de esta sección describe la estructura del archivo plugin.xml como una serie de fragmentos de DTD. El archivo plugin.dtd
presenta la definición DTD en su totalidad.
<?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
>
El elemento <plugin> define el cuerpo del manifiesto. De forma opcional, éste contiene definiciones para el tiempo de ejecución del plug-in, declaraciones de cualquier punto de extensión nuevo introducido por el plug-in, así como las extensiones de configuración o funcionales (configuradas en los puntos de extensión definidos por otros plug-ins, o introducidas por este plug-in). <los atributos plugin> son como a continuación se presentan:
-
name - nombre del plug-in visualizable por el usuario (traducible)
-
id - identificador exclusivo para el plug-in.
-
Para minimizar las posibilidades de colisiones de nombres, el identificador debería provenir del identificador del dominio de internet del proveedor (invirtiendo los símbolos del nombre del dominio y añadiendo un símbolo de nombre adicional separado por un punto [.]).
Por ejemplo, el proveedor ibm.com podría definir al identificador de plug-in com.ibm.db2
-
[production rule: PlugInId]
-
version - número de versión del plug-in. Consulte org.eclipse.core.runtime.PluginVersionIdentifier
para obtener más detalles. El formato de la versión del plug-in es major.minor.service. Una modificación en el componente mayor se interpreta como un cambio de versión incompatible.
Una modificación en el componente menor se interpreta como un cambio de versión compatible.
Una modificación en el componente de servicio se interpreta como servicio acumulativo aplicado a la versión menor.
-
vendor-name - nombre visualizable para el usuario del proveedor que suministra el
plug-in.
-
class - nombre de la clase de plug-in de este plug-in. La clase debe ser una
subclase de org.eclipse.core.runtime.Plugin.
El elemento* de la regla de construcción DTD de XML significa cero o más ocurrencias del elemento; elelemento? significa cero o una ocurrencia del elemento; y elelemento+ (utilizado más abajo) significa una o más ocurrencias del elemento. En base a la definición de <plugin> arriba explicada, esto significa por ejemplo, que un plug-in que contenga sólo una definición de tiempo de ejecución y ninguna declaración de punto de extensión o configuración de extensión es válido (por ejemplo, las bibliotecas comunes de las cuales dependen otros plug-ins).
De forma similar, un plug-in que contenga sólo configuraciones de extensión pero ningún punto de extensión o de tiempo de ejecución propios (por ejemplo, clases de configuración entregadas en otros plug-ins en puntos de extensión declarados en otros plug-ins).
La sección <requires> del manifiesto declara cualquier dependencia con otros plug-ins.
<!ELEMENT requires (import+)>
<!ELEMENT import EMPTY>
<!ATTLIST import
plugin CDATA #REQUIRED
version CDATA #IMPLIED
match (exact | compatible) "compatible"
export (true | false) "false"
>
Cada dependencia se especifica utilizando un elemento de <importación>. Contiene los siguientes atributos:
-
plugin - identificador del plug-in requerido
-
version - especificación de versión opcional
-
match - regla de emparejar versión. Ignorado si el atributo de la versión no está
especificado. Determina si la dependencia se resuelve sólo con un plug-in de la versión especificada (posiblemente con un servicio adicional aplicado) o si la dependencia puede resolverse con cualquier versión compatible (incluyendo una versión menor más reciente del plug-in)
-
export - especifica si las clases de plug-in dependientes están visibles (están (re)exportadas) a los usuarios de este plug-in. Por omisión, las clases dependientes no se exportan (no están visibles)
La sección <tiempo de ejecución> del manifiesto contiene una definición de una o más bibliotecas que componen el tiempo de ejecución del plug-in.
Las bibliotecas referenciadas se utilizan por los mecanismos de ejecución de la plataforma
(el cargador de clase del plug-in) para cargar y ejecutar el código correcto requerido
por el plug-in.
<!ELEMENT runtime (library+)>
<!ELEMENT library (export*)>
<!ATTLIST library
name CDATA #REQUIRED
>
<!ELEMENT export EMPTY>
<!ATTLIST export
name CDATA #REQUIRED
>
El elemento <tiempo de ejecución> no tiene atributos.
Los elementos de la <biblioteca> definen de forma colectiva el tiempo de ejecución del plug-in. Debe especificarse por lo menos una <biblioteca>. Cada elemento de <biblioteca> tiene los siguientes atributos:
-
name - referencia de serie que denomina un archivo o directorio de biblioteca que contenga clases (relativo al directorio de instalación de plug-in). Las referencias de directorio deben contener separador de archivo de salida.
Cada elemento de <biblioteca> puede especificar qué parte de la biblioteca debería exportarse. Las reglas de exportación se especifican como un conjunto de máscaras de exportación. Por omisión (no se especifican reglas de exportación), la biblioteca se considera privada.
Los elementos de <exportación> tienen los siguientes atributos:
-
name - sespecifica la máscara de exportación. Los valores válidos son:
-
* - indica que todos los contenidos de la biblioteca se han exportado (público)
-
nombre-de-paquete.* - indica que todas las clases en el paquete especificado se han exportado. Las reglas de comparación son las mismas que en la declaración de importación de Java.
-
nombre-de-clase - nombre de clase de java totalmente calificado
La arquitectura de la plataforma se basa en la noción de puntos de extensión configurables. La plataforma por ella misma predefine un conjunto de puntos de extensión que cubren la tarea de ampliar la plataforma y el escritorio (por ejemplo, añadiendo acciones de menú, contribuyendo al editor insertado). Además de los puntos de extensión predefinidos, cada plug-in suministrado puede declarar puntos de extensión adicionales.
Al declarar un punto de extensión, el plug-in está básicamente anunciando la
capacidad de configurar la función del plug-in con extensiones suministradas desde el
exterior. Por ejemplo, el plug-in de construcción de páginas puede declarar un punto de extensión para añadir nuevos controles de tiempo de diseño (DTC) a su paleta de construcción.
Esto significa que el constructor de página ha definido una arquitectura para lo que intenta ser un DTC y ha implementado el código que busca las extensiones DTC que hayan sido configuradas en los puntos de extensión.
<!ELEMENT extension-point EMPTY>
<!ATTLIST extension-point
name CDATA #REQUIRED
id CDATA #REQUIRED
schema CDATA #IMPLIED
>
El elemento <punto de extensión> tiene los siguientes atributos:
-
name - nombre visualizable por el usuario (traducible) del punto de extensión
-
id - símbolo identificador simple, exclusivo para este plug-in. El símbolo no puede contener puntos (.) ni espacios en blanco.
-
[production rule: ExtensionPointId]
-
schema - especificación de esquema para este punto de extensión. Los detalles exactos están siendo definidos como parte del entorno de desarrollo de plug-in (PDE). El esquema actualmente no se utiliza en el tiempo de ejecución. La referencia es un nombre de archivo relativo a la localización de la instalación del plug-in.
Las extensiones actuales se configuran en los puntos de extensión (predefinidos o declarados nuevamente en este plug-in) en la sección <extension>. La información de la configuración se especifica como un XML correctamente constituido situado entre las etiquetas <extension> y </extension>. La plataforma no especifica la forma actual de la señalización de configuración (a parte de requerir que sea un XML correctamente construido). La señalización es definida por elsuministrador del plug-in que declaró el punto de extensión. La plataforma en realidad no interpreta la señalización de configuración. Simplemente pasa la información de configuración al plug-in como parte del proceso de punto de extensión (en el momento que la lógica del punto de extensión consulta todas las extensiones configuradas)
<!ELEMENT extension ANY>
<!ATTLIST extension
point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED
>
El elemento <extension> tiene los siguientes atributos:
-
point - referencia para el punto de extensión que se configura. El punto de extensión puede ser uno de los definidos en este plug-in o en otro plug-in
-
[production rule: ExtensionPointReference]
-
id - identificador opcional para esta instancia de configuración de punto de extensión. Éste es utilizado por los puntos de extensión que necesitan identificar únicamente (en vez de sólo enumerar) las extensiones configuradas específicas. El identificador se especifica
como un símbolo simple y único dentro de la definición del plug-in declarante. Cuando se utiliza globalmente, el identificador de extensión es calificado por el identificador del plug-in
-
[production rule: ExtensionId]
-
name - nombre visualizable por el usuario (traducible) de la extensión
Importante: El contenido del elemento <extensión> es declarado utilizando la
regla ANY. Esto significa que cualquier XML correctamente constituido puede ser especificado
dentro de la sección de configuración de la extensión (entre las etiquetas <extension>
y </extension> ).