Bronfeatures en -plugins genereren

PDE Build kan een bronfeature of -plugin genereren.  Bekijk de volgende SDK-feature:
  features/

org.foo.sdk/
feature.xml: <omvat id="org.foo.rcp" />
<omvat 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" />

Het idee van de SDK is dat deze zowel een feature als de bron van deze feature bevat.  Zie de eigenschap generate.feature in het bestand build.properties van de feature.  Deze eigenschap vertelt PDE Build een feature genaamd "org.foo.rcp.source" te genereren op basis van de content van de feature "org.foo.rcp".  PDE Build zal een feature org.foo.rcp.source genereren, een plugin die de broncode bevat, en fragmenten met de bron van alle platformspecifieke bundels die in de feature zijn opgenomen:
  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

De gegenereerde bronfeature aanpassen

De eigenschap generate.feature heeft de volgende vorm:
generate.feature@<source feature id> = <feature id> [, feature@<feature id>] [, plugin@<plugin id>[;unpack="false"]]
Gebruik plugin@ om aanvullende plugins die geen onderdeel vormden van de oorspronkelijke feature aan de gegenereerde bronfeature toe te voegen. Dit is handig voor documentatieplugins.  De feature@ samen met een bronsjabloon kan worden gebruikt om bronfeatures te nesten (zie hieronder).

Bronsjablonen

De feature waarvan de bronfeature wordt gegenereerd, kan sjabloonbestanden verstrekken die in de gegenereerde bronfeature worden opgenomen:
  features/

org.foo.rcp/
sourceTemplateFeature/<bestanden die in de gegenereerde bronfeature worden opgenomen>
sourceTemplatePlugin/<bestanden die in de gegenereerde bronplugin worden opgenomen>
sourceTemplateFragment/<bestanden die in gegenereerde platformspecifieke fragmenten worden opgenomen>

Alle bestanden die zich in deze map sourceTemplate bevinden, worden in de juiste gegenereerde feature/plugin/fragment opgenomen.  Bestanden uit deze directory's zullen door PDE Build gegenereerde bestanden vervangen.  Dit kan worden gebruikt om een aangepaste feature.xml te verstrekken als er vereisten zijn voor uw bronfeature die niet door PDE Build worden ondersteund.

Gegenereerde bronfeatures nesten

U kunt bronfeatures nesten door een bestand sourceTemplateFeature/build.properties te verstrekken voor uw gegenereerde bronfeature die een eigenschap generate.feature bevat voor de geneste bronfeature.  U moet er ook voor zorgen dat uw hoofdbron-feature.xml de geneste bronfeature bevat. Dit kunt u doen door middel van feature@ of door een sjabloon-feature.xml op te geven:

  features/

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

feature.xml: <omvat id="org.foo.rcp" />
<omvat 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/...
In het bovenstaande voorbeeld bevat   org.foo.sdk een gegenereerde bronfeature genaamd org.foo.rcp.source.  Door deze gegenereerde bronfeature wordt het sjabloonbestand sourceTemplateFeature/build.properties opgehaald.  Ook bevat het org.foo.nested.source in de feature.xml.  Wanneer PDE Build de gegenereerde org.foo.rcp.source verwerkt, ziet het dat de feature org.foo.nested.source en de eigenschap generate.feature zijn opgenomen, en genereert het vervolgens de org.foo.nested.source.

Een bronplugin genereren

Het is ook mogelijk een enkele bronplugin te genereren op basis van een enkele plugin in plaats van de bron op een feature te baseren.  De eigenschap hiervoor is:

generate.plugin@<bronplugin-ID>=<plugin-ID>

Voorbeeld:
  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