產生來源特性和外掛程式

「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@<source feature id> = <feature id> [, feature@<feature id>] [, plugin@<plugin id>[;unpack="false"]]
請利用 plugin@,將不屬於原始特性的其他外掛程式加到產生的來源特性中。 對於文件外掛程式而言,這很有用。 feature@ 與來源範本合起來,可用來巢狀安排來源特性(請參閱下文)。

來源範本

產生來源特性的特性可以提供一些將併到產生之來源特性中的範本檔:
  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>

在這些 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 檔。 它也會將 org.foo.nested.source 併在它的 feature.xml 中。 因此,當 PDE 建置處理產生的 org.foo.rcp.source 時,它會見到併入 org.foo.nested.source 特性及 generate.feature 內容, 之後,它會產生 org.foo.nested.source。

產生來源外掛程式

另外,它也有可能根據單一外掛程式來產生單一來源外掛程式,而不是以特性為來源基礎。 執行這個動作的內容是:

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

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