Создание комплектом и модулей с исходным текстом

Система компоновки 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 обычно включает и комплект, и его исходный код.   Обратите внимание на свойство generate.feature в файле build.properties комплекта.  Это свойство позволяет сгенерировать комплект "org.foo.rcp.source" на основе содержимого комплекта "org.foo.rcp".  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, будут включены в соответствующий модуль или комплект.   Обратите внимание, что файлы из этих каталогов заменяют файлы, созданные при компоновке.   Это может быть полезно для создания пользовательского 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.  Поэтому при компоновке org.foo.rcp.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