Konfigurowanie środowiska kompilacji

Pakunki są domyślnie kompilowane za pomocą środowiska JRE aktualnie używanego do budowania i z poziomami źródła i celu ustawionymi domyślnie na 1.3 i 1.2.

Środowisko budowania PDE daje możliwość konfigurowania środowiska JRE używanego do kompilacji dla każdego pakunku z osobna. Aby skorzystać z tej możliwości, w pierwszej kolejności należy wskazać środowisku PDE dostępne środowiska JRE. W pliku konfiguracji budowania build.properties ustaw właściwości wskazujące na wszystkie zainstalowane środowiska JRE. Szablonowy plik build.properties w katalogu org.eclipse.pde.build/templates/headless-build zawiera listę środowisk przekształconą w komentarze. Usuń znaki komentarza przy właściwościach odpowiadających posiadanym środowiskom JRE i ustaw ich wartości na listy plików JAR umieszczanych w startowej ścieżce klasy. Na przykład ustawienie właściwości:

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

spowoduje kompilację pakunków wymagających środowiska Java 1.5 z wykorzystaniem plików rt.jar i jsse.jar. Nazwy właściwości powinny odpowiadać nazwom środowisk JRE znanych środowisku PDE Build. Środowisko PDE Build automatycznie ustawi poziomy źródła i celu dla każdego środowiska wykonawczego. Oto wykaz środowisk JRE znanych środowisku PDE Build wraz z powiązanymi poziomami źródła i celu:

Środowisko
Źródło
Cel
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

Wybór środowiska dla pakunku

Istnieją dwa ustawienia wpływające na środowisko używane do kompilacji pakunku. Pierwszym z nich jest nagłówek manifestu Bundle-RequiredExecutionEnvironment. Nagłówek ten zawiera listę środowisk, w których pakunek może być uruchamiany. Pakunek powinien korzystać wyłącznie z metod należących do podzbioru właściwego metod we wszystkich wymienionych środowiskach. Pożądane jest korzystanie ze środowiska kompilacji możliwie najbardziej zbliżonego do środowiska wykonawczego.

Drugim ustawieniem jest właściwość jre.compilation.profile w pliku build.properties pakunku. Wartością tej właściwości powinno być preferowane środowisko kompilacji pakunku w sytuacji, gdy lista określona przez nagłówek Bundle-RequiredExecutionEnvironment nie jest odpowiednia.

Połączenie tych dwóch ustawień daje listę środowisk: najpierw wartość właściwości jre.compilation.profile, a następnie środowiska określone w nagłówku Bundle-RequiredExecutionEnvironment. Do kompilacji pakunku zostanie wykorzystane pierwsze z wymienionych na tej liście środowisk dostępne w konfiguracji budowania (patrz wyżej).

Przykład:
<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

W powyższej konfiguracji rozważane są następujące środowiska (w tej kolejności): J2SE-1.4, CDC-1.0/Foundation-1.0, J2SE-1.3. Przykładowe ustawienia określają, że pakunek może być uruchamiany w środowiskach CDC/Foundation i J2SE-1.3, ale należy go kompilować w środowisku J2SE-1.4. W tym przypadku środowisko J2SE-1.4 jest wskazane w konfiguracji budowania i jest wymienione jako pierwsze na liście środowisk, więc to ono zostanie użyte do kompilacji pakunku. Używane w tym przypadku poziomy źródła i celu to 1.3 i 1.2. Gdyby w konfiguracji budowania zdefiniowana była jedynie wersja J2SE-1.3, a nie J2SE-1.4, to wersja J2SE-1.3 byłaby jedyną spośród wymienionych na liście, dla której byłoby dostępne środowisko JRE, więc ta właśnie wersja zostałaby użyta do kompilacji pakunku. W takim przypadku poziomy źródła i celu byłyby równe 1.3 i 1.1.

Jawne określanie ustawień kompilacji

Jeśli z jakiegoś względu wskazanie środowisk zgodnie z powyższą metodą nie daje pożądanej konfiguracji, możliwe jest jawne zdefiniowanie ustawień wymaganych przez pakunek. Jeśli na przykład pakunek korzysta z wersji J2SE-1.4 z asercjami, to należałoby ustawić poziomy źródła i celu na 1.4 zamiast domyślnych wartości 1.3 i 1.2.

Aby jawnie ustawić poziomy źródła i celu Javy, w pliku build.properties pakunku należy ustawić właściwości javacSource i javacTarget. Podane w ten sposób właściwości przesłonią wartości pobrane z ustawień środowiska.

Ustawiając właściwość bootClasspath w pliku build.properties pakunku można w podobny sposób przesłonić ustawienie zestawu plików JAR, z którymi pakunek będzie kompilowany.