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" />
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
generate.feature@<source feature id> = <feature id> [, feature@<feature id>] [, plugin@<plugin id>[;unpack="false"]]
features/
org.foo.rcp/
sourceTemplateFeature/<files to be included in generated source feature>
sourceTemplatePlugin/<files to be included in generated source plugin>
sourceTemplateFragment/<files to be included in generated platform specific fragments>
Any files located in these sourceTemplate folder will be included in
the appropriate generated feature/plug-in/fragment. Specifically,
files from these directories will replace files generated by PDE
build. This can be used to provide a custom feature.xml if there
are requirements for your source feature that PDE build does not
support.
You can nest source features by providing a
sourceTemplateFeature/build.properties file for your generated source
feature that contains a generate.feature property for the nested source
feature. You will also need to ensure that your top source
feature.xml includes the nested source feature, do this either by using
feature@ or by providing a template 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/...
It is also possible to generate a single source plug-in based on a single plug-in instead of basing the source on a feature. The property to do this is:
generate.plugin@<source plug-in id>=<plug-in id>
Example: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