Generér kildefunktioner og -plugins

PDE Build kan generere en kildefunktion eller en kilde-plugin.  Se f.eks. denne SDK-funktion:
features/
org.foo.sdk/
feature.xml: <inkluderings-id="org.foo.rcp" />
<inkluderings-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" />

Ideen med SDK er, at det både inkluderer en funktion og kilden til funktionen.  Læg mærke til egenskaben generate.feature i funktionens build.properties-fil.  Denne egenskab får PDE Build til at generere en funktion med navnet "org.foo.rcp.source" ud fra indholdet i funktionen "org.foo.rcp".  PDE Build genererer en org.foo.rcp.source-funktion, en plugin, der indeholder kildekoden, og fragmenter, der indeholder kilden til alle platformsspecifikke bundter, som er inkluderet i funktionen:
  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

Tilpas den genererede kildefunktion

Egenskaben generate.feature har følgende format:
generate.feature@<kildefunktions-id> = <funktions-id> [, feature@<funktions-id>] [, plugin@<plugin-id>[;unpack="false"]]
Benyt plugin@ til at føje yderligere plugins, som ikke var en del af den oprindelige funktion, til den genererede kildefunktion.  Dette er nyttigt til dokumentations-plugins.  feature@ kan benyttes sammen med en kildeskabelon til at indlejre kildefunktioner (se nedenfor).

Kildeskabeloner

Den funktion, som kildefunktionen genereres ud fra, kan stille skabeloner til rådighed, som skal inkluderes i den genererede kildefunktion:
  features/

org.foo.rcp/
sourceTemplateFeature/<filer, der skal inkluderes i den genererede kildefunktion>
sourceTemplatePlugin/<filer, der skal inkluderes i den genererede kilde-plugin>
sourceTemplateFragment/<filer, der skal inkluderes i de genererede platformsspecifikke fragmenter>

Alle filer, som er placeret i disse sourceTemplate-foldere, bliver inkluderet i den tilsvarende funktion, den tilsvarende plugin eller det tilsvarende fragment.  Helt specifikt vil filer fra disse biblioteker overskrive filer, som genereres af PDE Build.  Dette kan benyttes til at oprette en tilpasset feature.xml-fil, hvis der er krav til kildefunktionen, som PDE Build ikke understøtter.

Indlejr genererede kildefunktioner

Du kan indlejre kildefunktioner ved at stille en sourceTemplateFeature/build.properties-fil til rådighed for den genererede kildefunktion, der indeholder en generate.feature-egenskab for den indlejrede kildefunktion.  Du skal også sikre dig, at kildefilen feature.xml på øverste niveau inkluderer den indlejrede kildefunktion. Det kan du enten gøre ved at benytte feature@ eller ved at oprette en feature.xml-skabelon:

  features/

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

feature.xml: <inkluderings-id="org.foo.rcp" />
<inkluderings-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/...
I ovenstående eksempel indeholder   org.foo.sdk en genereret kildefunktion med navnet org.foo.rcp.source.  Denne genererede kildefunktion henter skabelonfilen sourceTemplateFeature/build.properties.  Den inkluderer også org.foo.nested.source i sin feature.xml.  Så når PDE Build behandler den genererede org.foo.rcp.source, finder programmet inkluderingen af funktionen org.foo.nested.source og egenskaben generate.feature og genererer derefter org.foo.nested.source.

Generér en kilde-plugin

Det er også muligt at generere en enkelt kilde-plugin baseret på en enkelt plugin i stedet for at basere kilden på en funktion.  Den egenskab, der bruges til at gøre dette, er:

generate.plugin@<kilde-plugin-id>=<plugin-id>

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