生成源代码功能部件和插件

“PDE 构建”可以生成源代码功能部件或插件。请考虑以下 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" />

SDK 的思想是同时包含功能部件以及该功能部件的源代码。请注意功能部件的 build.properties 文件中的 generate.feature 属性。此属性指示“PDE 构建”根据功能部件“org.foo.rcp”的内容生成名为“org.foo.rcp.source”的功能部件。“PDE 构建”将生成 org.foo.rcp.source 功能部件、包含源代码的插件以及片段,那些片段包含该功能部件中包括的任何特定于平台的捆绑软件的源代码:
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 属性的格式如下所示:
generate.feature@<源代码功能部件标识> = <功能部件标识> [, feature@<功能部件标识>] [, plugin@<插件标识>[;unpack="false"]]
使用 plugin@ 来将原始功能部件中未包含的附加插件添加到所生成的源代码功能部件中。此功能对于文档插件来说特别有用。可以将 feature@ 与源代码模板配合使用,以嵌套源代码功能部件(请参阅以下内容)。

源代码模板

生成源代码功能部件时所依据的功能部件可以提供模板文件,以将那些模板文件包括在所生成的源代码功能部件中:
features/
org.foo.rcp/
sourceTemplateFeature/<要包括在所生成的源代码功能部件中的文件>
sourceTemplatePlugin/<要包括在所生成的源代码插件中的文件>
sourceTemplateFragment/<要包括在所生成的特定于平台的片段中的文件>

这些 sourceTemplate 文件夹中的任何文件都将包括在所生成的适当功能部件/插件/片段中。确切地说,这些目录中的文件将替换“PDE 构建”生成的文件。在需要“PDE 构建”所不支持的源代码功能部件时,可使用此功能来提供定制 feature.xml。

嵌套所生成的源代码功能部件

通过为所生成的源代码功能部件提供 sourceTemplateFeature/build.properties 文件(此文件包含嵌套的源代码功能部件的 generate.feature 属性),可以对源代码功能部件进行嵌套。您还需要确保顶层源代码 feature.xml 包含嵌套的源代码功能部件,可以通过使用 feature@ 或通过提供模板 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/...
在以上示例中,org.foo.sdk 包含生成的源代码功能部件,此功能部件名为 org.foo.rcp.source。这个生成的源代码功能部件将获取模板 sourceTemplateFeature/build.properties 文件。在它的 feature.xml 中还将包括 org.foo.nested.source。因此,当“PDE 构建”处理所生成的 org.foo.rcp.source 时,它将看到所包括的 org.foo.nested.source 功能部件以及 generate.feature 属性,于是将生成 org.foo.nested.source。

生成源代码插件

可以根据单个插件来生成单个源代码插件,而不是让源代码基于功能部件。用来实现此目标的属性是:

generate.plugin@<源代码插件标识>=<插件标识>

示例:
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