Manifesto de Plug-in da Plataforma Eclipse

Versão 3.2 - última revisão em 9 de maio de 2006

As definições de marcação do manifest abaixo usam vários tokens e identificadores de nomenclatura. Para eliminar a ambigüidade, seguem algumas regras de produção para essas definições [elas são mencionadas no texto abaixo]. Em geral, todos os identificadores são estabelecidos pela distinção entre maiúsculas e minúsculas.

SimpleToken := seqüê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 dessa seção descreve a estrutura do arquivo plugin.xml como uma série de fragmentos DTD. O arquivo plugin.dtd apresenta a definição de DTD em sua totalidade.

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

O elemento do <plug-in> define o corpo do manifest. Como opção, ele contém declarações de quaisquer novos pontos de extensão que estão sendo introduzidos pelo plug-in, bem como configuração de extensões funcionais (configuradas nos pontos de extensão definidos por outros plug-ins, ou introduzidos por esse plug-in).

O element* regra de construção do XML DTD significa nenhuma ou mais ocorrências do elemento; element? significa nenhuma ou uma ocorrência do elemento e element+ (usado abaixo) significa uma ou mais ocorrências do elemento. Com base na definição de <plugin> anterior, isso significa, por exemplo, que um plug-in que não contém nenhuma declaração de ponto de extensão ou configuração de extensão é válido (por exemplo, bibliotecas comuns das quais outros plug-ins dependem). De modo semelhante, um plug-in contendo somente configurações de extensão e nenhum ponto de extensão próprio também é válido (por exemplo, classes de configuração entregues em outros plug-ins, em pontos de extensão declarados em outros plug-ins).

A arquitetura do Eclipse é baseada na noção de pontos de extensão configuráveis. A própria plataforma predefine um conjunto de pontos de extensão que cobrem a tarefa de ampliar a plataforma e o desktop (por exemplo, incluindo um menu de ações, contribuindo com editores incorporados). Além dos pontos de extensão predefinidos, cada plug-in fornecido pode declarar pontos de extensão adicionais. Declarando um ponto de extensão, o plug-in está essencialmente promovendo sua habilidade de configurar a função de plug-in com extensões fornecidas externamente. Por exemplo, o plug-in Page Builder pode declarar um ponto de extensão para adicionar novos DTCs (Design Time Controls) à paleta de construção. Isso significa que o Page Builder definiu uma arquitetura que significa ser um DTC e implementou o código que procura por extensões DTC que foi configurada nos pontos de extensão.

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

Os elementos de <pontos de extensão> têm os seguintes atributos:

Extensões reais são configuradas nos pontos de extensão (predefinidas ou declaradas nesse plug-in) na seção <extensão>.A informação de configuração é especificada como um XML bem formado contido entre a <extensão> e as marcações de </extensão>.A plataforma não especifica o formulário real da marcação de configuração (além de exigir que ele seja um XML bem formado). A marcação é definida pelo fornecedor do plug-in que declara dos pontos de extensão. A plataforma, na verdade, não interpreta a marcação de configuração. Ela simplesmente transmite as informações de configuração ao plug-in como parte do processamento dos pontos de extensão (no momento em que os pontos de extensão lógicos consultam todas as suas extensões configuradas).

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

O elemento de <extension> tem os seguintes atributos:

Importante: o conteúdo do elemento de <extensão> é declarado usando-se a regra ANY.Isso significa que um XML bem formado pode ser especificado dentro da seção de configuração da extensão (entre a <extensão> e as marcações de </extensão>).

Fragmentos

Os fragmentos são utilizados para aumentar o escopo de um plug-in. Um exemplo seria incorporar dados tais como mensagens ou rótulos em outro idioma.

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

Os componentes <extension-point> e <extension> de um fragmento serão incluídos logicamente no plug-in hosting.

Nota sobre ExtensionId e ExtensionPointId

Foi incluído um processo especial para suportar retrocompatibilidade para ExtensionId e ExtensionPointId utilizados para conter pontos ('.') antes da versão 3.2. Dependendo da versão especificada na tag <?eclipse version?>:

Essa regra se aplica somente a ExtensionId e ExtensionPointId que contêm caracteres de ponto ('.').


As versões mais antigas do manifesto de plug-ins podem ser encontradas aqui: