Настройка среды компиляции

По умолчанию комплекты будут компилироваться с заданной JRE и с уровнями совместимости исходного кода и целевого объекта 1.3 и 1.2.

Для комплектов можно выбрать другую JRE для компиляции.   Для этого прежде всего укажите доступные JRE.   В файле build.properties задайте свойства для каждой из JRE.  В шаблоне build.properties из org.eclipse.pde.build/templates/headless-build часть сред закомментирована.   Удалите комментарий для свойств доступных JRE и задайте их значения как набор jar, относящихся к пути классам загрузки.   Например, если задать свойство как

J2SE-1.5=C:/Java/1.5/jre/lib/rt.jar;C:/Java/1.5/jre/lib/jsse.jar

то комплекты будут скомпилированы java 1.5 с rt.jar и jsse.jar.  Имена свойств должны соответствовать именам сред, как они заданы для системы компоновки PDE.    PDE автоматически задает уровни совместимости исходного кода и целевого объекта для среды.   Ниже перечислены поддерживаемые в PDE среды и их уровни совместимости исходного кода и целевого объекта:

Среда
Исходный код
Целевой объект
CDC-1.0/Foundation-1.0
1.3
1.1
CDC-1.1/Foundation-1.1
1.3
1.2
OSGi/Minimum-1.0
1.3
1.1
OSGi/Minimum-1.1
1.3
1.2
JRE-1.1
1.1
1.1
J2SE-1.2
1.2
1.1
J2SE-1.3
1.3
1.1
J2SE-1.4
1.3
1.2
J2SE-1.5
1.5
1.5
JavaSE-1.6
1.6
1.6
PersonalJava-1.1
1.1
1.1
PersonalJava-1.2
1.1
1.1
CDC-1.0/PersonalBasis-1.0
1.3
1.1
CDC-1.0/PersonalJava-1.0
1.3
1.1
CDC-1.1/PersonalBasis-1.1
1.3
1.2
CDC-1.1/PersonalJava-1.1
1.3
1.2

Выбор среды для комплекта

За выбор среды компиляции отвечают два параметра.   Первый - это заголовок манифеста Bundle-RequiredExecutionEnvironment.  В этом заголовке указывается список сред, в которых может работать комплект.   Комплект должен применять подмножество методов, которые поддерживаются во всех перечисленных средах.   Рекомендуется обеспечить наилучшее совпадение среды компиляции и среды выполнения.

Второй параметр - jre.compilation.profile из файла build.properties комплекта.  Значением этого свойства должна быть предпочтительная среда для компиляции этого комплекта, если список Bundle-RequiredExecutionEnvironment не позволяет ее определить.

Вместе эти параметры создают список сред. Первыми учитываются среды из jre.compilation.profile, затем из Bundle-RequiredExecutionEnvironment.  Для компиляции комплекта будет использоваться первая доступная среда из этого списка.

Пример:
<buildDirectory>/plugins/bundleA/
META-INF/manifest.mf: Bundle-RequiredExecutionEnvironment: CDC-1.0/Foundation-1.0, J2SE-1.3
build.properties:  jre.compilation.profile=J2SE-1.4

<buildConfiguration>/
build.properties:  J2SE-1.3=C:/Java1.3/jre/lib/rt.jar;C:/Java1.3/jre/lib/i18n.jar
J2SE-1.4=C:/Java1.4/jre/lib/rt.jar;C:/Java1.4/jre/lib/jsse.jar

В данном примере будут рассматриваться следующие среды в указанном порядке: J2SE-1.4,  CDC-1.0/Foundation-1.0, J2SE-1.3.  Комплект может работать в CDC/Foundation и J2SE-1.3, но по каким-то причинам  он должен быть скомпилирован с J2SE-1.4.  Для этого J2SE-1.4 задается в конфигурации компоновки и указывается первой в списке сред, поэтому используется именно она.   Уровни совместимости исходного кода и целевого объекта в этом случае будут равны 1.3 и 1.2.  Если бы в конфигурации компоновки была задана только J2SE-1.3, но не J2SE-1.4, то J2SE-1.3 была бы единственной средой из списка и использовалась для компиляции.   Уровни совместимости исходного кода и целевого объекта в этом случае были бы равны 1.3 и 1.1.

Явное задание значений для компиляции

Если описанная выше схема недостаточна для создания требуемой среды компиляции, то для комплекта можно явным образом указать параметры компиляции.   Например, если комплект будет использовать J2SE-1.4 с операторами assert, то уровни совместимости исходного кода и целевого объекта в этом случае должны быть равны 1.4, вместо значений по умолчанию 1.3 и 1.2.

Для того чтобы задать уровни совместимости исходного кода и целевого объекта, комплект должен определить свойства javacSource и javacTarget в файле build.properties.   Эти свойства будут применяться вместо параметров среды.

Аналогично, свойство bootClasspath в файле build.properties комплекта позволяет переопределить набор JAR для компиляции.