Gerando Recursos e Plug-ins de Origem

O Build PDE pode gerar um recurso ou plug-in de origem.  Considere o seguinte recurso do SDK:
  features/

org.foo.sdk/
feature.xml: <includes id="org.foo.rcp" />
<includes id="org.foo.rcp.source" />
build.properties: generate.feature@org.foo.rcp.source = org.foo.rcp
org.foo.rcp/
feature.xml: <plugin id="org.foo.BundleA" />
<plugin id="org.foo.BundleB" />
<plugin id="org.foo.BundleB.win32" fragment="true" os="win32" />

O conceito do SDK é incluir um recurso, bem como a origem desse recurso.  Observe a propriedade generate.feature no arquivo build.properties do recurso.  Essa propriedade indica ao Build PDE para gerar um recurso nomeado "org.foo.rcp.source" com base no conteúdo do recurso "org.foo.rcp".  O build PDE gerará um recurso org.foo.rcp.source, um plug-in que conterá o código-fonte, e os fragmentos que contêm a origem de quaisquer pacotes configuráveis específicos da plataforma que foram incluídos no recurso:
  features/

org.foo.rcp.source/
feature.xml: <plugin id="org.foo.rcp.source"/>
<plugin id="org.foo.rcp.source.win32" fragment="true" os="win32" />
plugins/
org.foo.rcp.source/src/
org.foo.BundleA/src.zip
org.foo.BundleB/src.zip
org.foo.rcp.source.win32/src/
org.foo.BundleB.win32/src.zip

Customizando o Recurso de Origem Gerado

A propriedade generate.feature possui o seguinte formato:
generate.feature@<ID do recurso de origem> = <ID do recurso> [, feature@<ID do recurso>] [, plugin@<ID do plug-in>[;unpack="false"]]
Utilize plugin@ para incluir plug-ins adicionais que não fizeram parte do recurso original no recurso de origem gerado.  Isso é útil para plug-ins de documentação.  O feature@ junto com um modelo de origem pode ser utilizado para aninhar recursos de origem (consulte a seguir).

Modelos de Origem

O recurso a partir do qual o recurso de origem está sendo gerado pode fornecer arquivos de modelo para serem incluídos no recurso de origem gerado:
  features/

org.foo.rcp/
sourceTemplateFeature/<arquivos a serem incluídos no recurso de origem gerado>
sourceTemplatePlugin/<arquivos a serem incluídos no plugin de origem gerado>
sourceTemplateFragment/<arquivos a serem incluídos no fragmento gerado específico da plataforma>

Quaisquer arquivos localizados nessa pasta sourceTemplate serão incluídos no recurso/plug-in/fragmento gerado apropriado.  Especificamente, os arquivos desses diretórios substituirão os arquivos gerados pelo build PDE.  Isso poderá ser utilizado para fornecer um feature.xml customizado se houver requisitos relativos a seu recurso de origem que o build PDE não suporta.

Aninhando Recursos de Origem Gerados

Você pode aninhar recursos de origem fornecendo um arquivo sourceTemplateFeature/build.properties para seu recurso de origem gerado que contenha uma propriedade generate.feature para o recurso de origem aninhado.  Também é necessário assegurar que o principal feature.xml de origem inclua o recurso de origem aninhado e isso deve ser feito utilizando feature@ ou fornecendo um feature.xml do modelo:

  features/

org.foo.sdk/
sourceTemplateFeature/
build.properties: generate.feature@org.foo.nested.source = org.foo.nested

feature.xml: <includes id="org.foo.rcp" />
<includes id="org.foo.rcp.source" />

build.properties: generate.feature@org.foo.rcp.source = org.foo.rcp, feature@org.foo.nested.source

org.foo.rcp/...
org.foo.nested/...
Nesse exemplo,  org.foo.sdk contém um recurso de origem gerado nomeado org.foo.rcp.source.  Esse recurso de origem gerado obterá o arquivo sourceTemplateFeature/build.properties do modelo.  Ele também incluirá org.foo.nested.source em seu feature.xml.  Portanto, quando o build PDE estiver processando o org.foo.rcp.source gerado, ele detectará a inclusão do recurso org.foo.nested.source e da propriedade generate.feature e, por conseguinte, gerará o org.foo.nested.source.

Gerando um Plug-in de Origem

Também é possível gerar um plug-in de origem único com base em um plug-in único em vez de basear a origem em um recurso.  A propriedade para fazer isso é:

generate.plugin@<ID do plug-in de origem>=<ID do plug-in>

Exemplo:
  features/

org.foo.sdk/
feature.xml: <plugin id="org.foo.rcp" />
<plugin id="org.foo.rcp.source" />

build.properties: generate.plugin@org.foo.rcp.source = org.foo.rcp