Génération des dispositifs et des plug-ins source

La compilation PDE peut générer un dispositif ou un plug-in source.  Tenez compte du dispositif SDK suivant :
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" />

L'idée sous-jacente du SDK, c'est qu'il inclut un dispositif ainsi que son code source.  Notez la présence de la propriété generate.feature dans le fichier build.properties du dispositif.  Cette propriété indique à la compilation PDE de générer le dispositif "org.foo.rcp.source" en fonction du contenu du dispositif "org.foo.rcp".  La compilation PDE génère un dispositif org.foo.rcp.source, un plugin qui contiendra le code source et les fragments contenant le code source des bundles de plateforme inclus dans le dispositif :
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

Personnalisation du dispositif source généré

La propriété generate.feature a le format suivant :
generate.feature@<source feature id> = <feature id> [, feature@<feature id>] [, plugin@<plugin id>[;unpack="false"]]
Utilisez plugin@ pour ajouter au dispositif source généré des plug-ins qui ne faisaient pas parti du dispositif d'origine.  Ceci s'avère utile pour les plug-ins de documentation.  feature@ et un modèle de source peuvent être utilisés pour imbriquer des dispositifs source (voir ci-dessous).

Modèles source

Le dispositif à partir duquel le dispositif source est généré peut fournir des modèles de fichiers à inclure dans le dispositif source généré :
features/
org.foo.rcp/
sourceTemplateFeature/<fichiers à inclure dans le dispositif source généré>
sourceTemplatePlugin/<fichiers à inclure dans le plug-in source généré>
sourceTemplateFragment/<fichiers à inclure dans les fragments générés spécifique à la plateforme>

Les fichiers situés dans ces dossiers sourceTemplate seront inclus dans le dispositif, le plug-in, le fragment généré approprié.  Plus particulièrement, les fichiers de ces répertoires remplaceront les fichiers générés par la compilation PDE.  Ceci peut être utilisé pour fournir un fichier feature.xml personnalisé s'il existe des conditions pour le dispositif source que la compilation PDE ne prend pas en charge.

Imbrication de dispositifs source générés

Vous pouvez imbriquer des dispositifs en fournissant un fichier sourceTemplateFeature/build.properties pour le dispositif source généré qui contient une propriété generate.feature pour le dispositif source imbriqué.  Vous devez également vous assurer que le code source principal feature.xml inclut le dispositif source imbriqué. Pour ce faire, utilisez feature@ ou fournissez un modèle 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/...
Dans l'exemple ci-dessus,   org.foo.sdk contient le dispositif source généré org.foo.rcp.source.  Ce dispositif source généré obtiendra le modèle de fichier sourceTemplateFeature/build.properties.  Il contiendra également org.foo.nested.source dans son fichier feature.xml.  Par conséquent, lorsque la compilation PDE traite le dispositif org.foo.rcp.source généré, il détecte l'inclusion du dispositif org.foo.nested.source et la propriété generate.feature, puis il génère le dispositif org.foo.nested.source.

Génération d'un plug-in source

Vous pouvez également générer un seul plug-in source en fonction d'un seul plug-in au lieu de baser le source sur un dispositif.  La propriété permettant d'effectuer cette opération est :

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

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