Manifesto de plug-in da plataforma Eclipse

Versão 3.2 - Revisto pela última vez a 9 de Maio, 2006

As definições de marcação de manifesto seguintes fazem uso de vários símbolos e identificadores de nomenclatura. Para eliminar a ambiguidade, a seguir encontram-se algumas regras de produção para estes símbolos e identificadores [referenciados no texto seguinte]. De uma forma geral, todos os identificadores são sensíveis a maiúsculas e minúsculas.

SimpleToken := sequência de caracteres de ('a-z','A-Z','0-9','_')
ComposedToken := SimpleToken | (SimpleToken '.' ComposedToken)
QualifiedId := ComposedToken '.' SimpleToken
ExtensionId := SimpleToken | QualifiedId
ExtensionPointId := SimpleToken | QualifiedId
ExtensionPointReference := SimpleToken | QualifiedId

O restante desta secção descreve a estrutura do ficheiro plugin.xml como uma série de fragmentos de DTD. O ficheiro plugin.dtd apresenta a definição da DTD por completo.

<?xml encoding="US-ASCII"?> 
<?eclipse version="3.2"?>
<!ELEMENT plugin (extension-point*, extension*)>

O elemento <plugin> define o corpo do manifesto. Opcionalmente, contém as declarações de quaisquer pontos de extensão novos a serem introduzidos pelo plug-in, bem como a configuração de extensões funcionais (configurada em pontos de extensão definidos por outros other plug-ins ou introduzida por este plug-in).

A regra de construção DTD XML element* significa que existem zero ou mais ocorrências do elemento; o valor element? significa zero ou um ocorrência do elemento; e element+ (utilizado em baixo) significa uma ou mais ocorrências do elemento. Com base na definição de <plugin> anterior, isto significa, por exemplo, que é válido um plug-in que não contém quaisquer declarações de pontos de extensão ou configurações de extensão (por exemplo, as bibliotecas comuns das quais dependem outros plug-ins). Do mesmo modo, também é válido um plug-in que contém apenas configurações de extensão e nenhum ponto de extensão próprio (por exemplo, as classes de configuração indicadas por outros plug-ins em pontos de extensão declarados noutros plug-ins).

A arquitectura do Eclipse baseia-se na noção de pontos de extensão configuráveis. A plataforma define por si própria um conjunto de pontos de extensão que cumprem a tarefa de expandir a plataforma e ambiente de trabalho (por exemplo, adicionando acções do menu, fazendo contribuições para o editor incorporado). Além dos pontos de extensão predefinidos, cada plug-in fornecido pode declarar pontos de extensão adicionais. Ao declarar um ponto de extensão, o plug-in está essencialmente a publicitar a capacidade de configurar a função do plug-in com extensões fornecidas externamente. Por exemplo, o plug-in de construção de páginas pode declarar um ponto de extensão para adicionar novos Controlos de Tempo de Desenho (DTC) na paleta do construtor. Isto significa que o construtor de páginas definiu uma arquitectura para o significa ser um DTC e implementou o código que procura extensões de DTC que foram configuradas nos pontos de extensão.

<!ELEMENT extension-point EMPTY>  
<!ATTLIST extension-point 
  name               CDATA #REQUIRED 
  id                 CDATA #REQUIRED    
  schema             CDATA #IMPLIED 
>

O elemento <extension-point> tem os seguintes atributos:

As extensões reais são configuradas em pontos de extensão (predefinidos ou recém-declarados neste plug-in) na secção <extension>. A informação sobre a configuração é especificada, bem como o XML bem formatado contido entre os códigos <extension> e </extension>. A plataforma não especifica a forma real da marcação de configuração (a não ser como como XML bem formatado). A marcação é definida pelo fornecedor do plug-in que declarou o ponto de extensão. A plataforma não interpreta realmente a marcação da configuração. Passa simplesmente a informação da configuração para o plug-in como parte do processamento de pontos de extensão (no momento em que a lógica de ponto de extensão consulta todas as extensões configuradas).

<!ELEMENT extension ANY> 
<!ATTLIST extension 
  point              CDATA #REQUIRED 
  id                 CDATA #IMPLIED 
  name               CDATA #IMPLIED 
>

O elemento <extension> tem os seguintes atributos:

Importante: o conteúdo do elemento <extension> é declarado utilizando a regra ANY. Isto significa que qualquer XML bem formato pode ser especificado dentro da secção de configuração da extensão (entre os códigos <extension> e </extension>).

Fragmentos

Os fragmentos são utilizados para aumentar o âmbito de um plug-in. Um exemplo seria incorporar os dados como as mensagens e os identificadores numa outra linguagem.

<?xml encoding="US-ASCII"?> 
<?eclipse version="3.2"?>
<!ELEMENT fragment (extension-point*, extension*)>

Os componentes <extension-point> e <extension> de um fragmento serão adicionados de modo lógico ao plug-in correspondente.

Nota sobre o ExtensionId e o ExtensionPointId

O processamento especial foi adicionado à retrocompatibilidade do suporte para o ExtensionId e o ExtensionPointId que continha pontos (".") nas versões anteriores à 3.2. Dependendo da versão especificada no separador <?eclipse version?>:

Esta regra aplica~se apenas ao ExtensionId e ao ExtensionPointId que contenham caracteres de pontos (".").


Versões mais antigas de manifestos do plug-in podem ser encontradas aqui: