Quellenfeatures und -Plug-ins generieren

Eine PDE-Erstellung kann ein Quellenfeature oder -Plug-in generieren.   Nehmen wir an, das folgende SDK-Feature wird verwendet:
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" />

Dieses Software-Development-Kit (SDK) enthält gleichzeitig ein Feature und die Quelle für dieses Feature.   Beachten Sie die Eigenschaft generate.feature in der Datei 'build.properties' des Features.   Diese Eigenschaftendatei signalisiert der PDE-Erstellung, ein Feature mit der Bezeichnung 'org.foo.rcp.source' auf der Grundlage des Featureinhalts 'org.foo.rcp' zu erstellen.   Die PDE-Erstellung generiert dann das Feature 'org.foo.rcp.source', ein Plug-in, in dem der Quellcode enthalten ist, und Fragmente, die die Quelle aller plattformspezifischen Produktpakete enthalten, die Bestandteil des Features sind:
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

Das generierte Quellenfeature anpassen

Die Eigenschaft 'generate.feature' besitzt das folgende Format:
generate.feature@<source feature id> = <feature id> [, feature@<feature id>] [, plugin@<plugin id>[;unpack="false"]]
Verwenden Sie 'plugin@', um weitere 'Plug-ins' zum generierten Quellenfeature hinzuzufügen, die nicht Bestandteil des ursprünglichen Features waren.   Dies ist bei Plug-ins für die Dokumentation sinnvoll.   'feature@' kann gemeinsam mit einer Quellenschablone zum Verschachteln von Quellenfeatures verwendet werden (siehe unten).

Quellenschablonen

Das Feature, aus dem das Quellenfeature generiert wird, kann über Schablonendateien verfügen, die in das generierte Quellenfeature aufgenommen werden sollen.
features/
org.foo.rcp/
sourceTemplateFeature/<Dateien, die in das generierte Quellenfeature aufgenommen werden sollen>
sourceTemplatePlugin/<Dateien, die in das generierte Quellen-Plug-in aufgenommen werden sollen>
sourceTemplateFragment/<Dateien, die in die generierten plattformspezifischen Quellenfragmente aufgenommen werden sollen>

Alle Dateien, die sich in diesem Ordner mit der Bezeichnung 'sourceTemplate' befinden, werden in das entsprechende generierte Feature, Plug-in oder Fragment aufgenommen.   Die Dateien aus diesen Verzeichnissen ersetzen also Dateien, die von der PDE-Erstellung generiert wurden.   Auf diese Art kann eine angepasste Datei 'feature.xml' bereitgestellt werden, wenn für das Quellenfeature Anforderungen existieren, die von der PDE-Erstellung nicht unterstützt werden.

Generierte Quellenfeatures verschachteln

Sie können Quellenfeatures verschachteln, indem Sie die Datei 'sourceTemplateFeature/build.properties' für ein generiertes Quellenfeature bereitstellen, in der die Eigenschaft 'generate.feature' für das verschachtelte Quellenfeature enthalten ist.   Sie müssen auch sicherstellen, dass die oberste Quelle 'feature.xml' das verschachtelte Quellenfeature enthält. Verwenden Sie hierzu 'feature@' oder stellen Sie eine Schablone mit der Bezeichnung 'feature.xml' zur Verfügung:

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/...
Im obigen Beispiel enthält  'org.foo.sdk' ein generiertes Quellenfeature mit der Bezeichnung 'org.foo.rcp.source'.   Dieses generierte Quellenfeature ruft die Schablonendatei 'sourceTemplateFeature/build.properties' ab.   Es nimmt auch 'org.foo.nested.source' in seine Datei 'feature.xml' auf.  Wenn die PDE-Erstellung das generierte Feature 'org.foo.rcp.source' verarbeitet, erkennt sie, dass das Feature 'org.foo.nested.source' und die Eigenschaft 'generate.feature' enthalten sind und generiert anschließend 'org.foo.nested.source'.

Quellen-Plug-in generieren

Es ist auch möglich, ein einziges Quellen-Plug-in auf der Grundlage eines einzelnen Plug-ins zu generieren, anstatt die Quelle auf der Grundlage eines Features zu generieren.   Hierfür benötigen Sie die folgende Eigenschaft:

generate.plugin@<source plug-in id>=<plug-in id>

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