Generowanie źródłowych składników i wtyczek

Środowisko PDE Build może wygenerować źródłowy składnik lub wtyczkę.  Rozważmy następujący składnik 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" />

Ideą pakietu SDK jest to, że zawiera on zarówno składnik, jak i jego źródło.  Warto zauważyć właściwość generate.feature znajdującą się w pliku build.properties składnika.  Właściwość ta nakazuje środowisku PDE Build wygenerowanie składnika o nazwie "org.foo.rcp.source" na podstawie zawartości składnika "org.foo.rcp".  Środowisko PDE Build wygeneruje składnik org.foo.rcp.source, wtyczkę zawierającą kod źródłowy oraz fragmenty zawierające źródło wszelkich pakunków dla konkretnej platformy, które zostały zawarte w składniku:
  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

Dostosowanie wygenerowanego składnika źródłowego

Właściwość generate.feature ma następującą postać:
generate.feature@<ID składnika źródłowego> = <ID składnika> [, feature@<ID składnika>] [, plugin@<ID wtyczki>[;unpack="false"]]
Właściwości plugin@ należy użyć w celu dodania do generowanego składnika źródłowego kolejnych wtyczek, które nie były częścią pierwotnego składnika.  Przydaje się to do tworzenia wtyczek dokumentacji.  Właściwość feature@ razem z szablonem źródła może służyć do zagnieżdżania składników źródłowych (patrz niżej).

Szablony źródła

Składnik, z którego generowany jest składnik źródłowy, może udostępniać pliki szablonów w celu włączenia ich do generowanego składnika źródłowego:
  features/

org.foo.rcp/
sourceTemplateFeature/<pliki do włączenia do generowanego składnika źródłowego>
sourceTemplatePlugin/<pliki do włączenia do generowanej wtyczki źródłowej>
sourceTemplateFragment/<pliki do włączenia do generowanych fragmentów dla konkretnej platformy>

Wszelkie pliki znajdujące się w folderze sourceTemplate zostaną włączone do odpowiedniego wygenerowanego składnika/wtyczki/fragmentu.  Pliki z tych katalogów zastąpią pliki wygenerowane przez środowisko PDE Build.  Można w ten sposób dostarczyć niestandardowy plik feature.xml, jeśli istnieją wymagania względem składnika źródłowego, których środowisko PDE Build nie obsługuje.

Zagnieżdżanie wygenerowanych składników źródłowych

Składniki źródłowe można zagnieżdżać, dostarczając plik sourceTemplateFeature/build.properties dla wygenerowanego składnika źródłowego zawierającego właściwość generate.feature dla zagnieżdżonego składnika źródłowego.  Należy także upewnić się, że źródłowy plik feature.xml najwyższego poziomu zawiera zagnieżdżony składnik źródłowy; można to zrobić za pomocą właściwości feature@ lub udostępniając szablon feature.xml:

  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/...
W powyższym przykładzie  org.foo.sdk zawiera wygenerowany składnik źródłowy o nazwie org.foo.rcp.source.  Pobierze on plik szablonu sourceTemplateFeature/build.properties.  Włączy także plik org.foo.nested.source do pliku feature.xml.  Dlatego też podczas przetwarzania wygenerowanego pliku org.foo.rcp.source przez środowisko PDE Build zostanie zauważone włączenie pliku org.foo.nested.source i właściwości generate.feature, a następnie wygenerowany zostanie plik org.foo.nested.source.

Generowanie wtyczki źródłowej

Możliwe jest także wygenerowanie pojedynczej wtyczki źródłowej na podstawie jednej wtyczki zamiast opierania źródła na składniku.  Służącą do tego właściwością jest:

generate.plugin@<ID wtyczki źródłowej>=<ID wtyczki>

Przykład:
  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