Definere kompileringsmiljøet

Som standard blir buntene kompilert med et hvilket som helst JRE som brukes til å kjøre byggingen, og med kilde- og målnivåene definert til 1.3 og 1.2.

PDE Build kan konfigurere det JRE som brukes under kompilering på et per bunt-grunnlag. Hvis du vil utnytte dette, må du først fortelle PDE Build hvilke JREer du har tilgjengelig. I build.properties-filen for byggekonfigurering definerer du egenskapene til å peke på hvert av de installerte JREene. Malen build.properties i org.eclipse.pde.build/templates/headless-build har en liste over miljøer som er kommentert ut. Du trenger bare å oppheve kommentaren for egenskapene som du har JREer for, og definere verdien til settet av jar-filer som tilhører klassebanen for oppstart. Hvis du for eksempel definerer egenskapen

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

kompileres bunter som krever java 1.5 mot rt.jar og jsse.jar. Navnene på egenskapene må samsvare med navnene på miljøene som PDE Build kjenner til. PDE Build definerer automatisk kilde- og målnivåene for hvert miljø. Dette er miljøene som PDE Build kjenner til og deres tilknyttede kilde/mål-nivåer:

Miljø
Kilde
Mål
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

Velge miljøet for bunten

Det finnes to innstillinger som påvirker miljøet som brukes til å kompilere bunten. Den ene er manifeststartsekvensen Bundle-RequiredExecutionEnvironment. Denne startsekvensen er en liste over miljøer som bunten kan kjøre på. Bunten bør bare bruke metoder som er i delsettet av alle miljøene på listen. Det er ønskelig at kompileringsmiljøet samsvarer så godt som mulig med kjøretidsmiljøet.

Den andre innstillingen er egenskapen jre.compilation.profile fra buntens build.properties-fil. Verdien av denne egenskapen bør være det foretrukne miljøet for kompilering av denne bunten hvis Bundle-RequiredExecutionEnvironment-listen ikke er adekvat.

Disse to innstillingene sammen danner en liste over miljøer, først jre.compilation.profile, deretter miljøene fra Bundle-RequiredExecutionEnvironment. Det første miljøet på denne listen som er tilgjengelig i byggekonfigurasjonen (se delen ovenfor), blir brukt til å kompilere bunten.

Eksempel:
<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

I oppsettet ovenfor er dette listen over miljøer som vurderes (henholdsvis): J2SE-1.4,  CDC-1.0/Foundation-1.0, J2SE-1.3. Bunten kan kjøre på CDC/Foundation og J2SE-1.3, men av en eller annen grunn, bør den kompileres med J2SE-1.4. I dette tilfellet er J2SE-1.4 definert i byggekonfigurasjonen og det står først i listen over miljøer, så det brukes til å kompilere bunten. Kilde- og målnivåene som brukes i dette tilfellet, er 1.3 og 1.2. Hvis byggekonfigurasjonen i stedet definerer bare J2SE-1.3, og ikke J2SE-1.4, så vil J2SE-1.3 være det eneste miljøet i listen som en JRE er tilgjengelig for, så det blir brukt til å kompilere bunten. Kilde- og målnivåene blir i dette tilfellet 1.3 og 1.1.

Definere eksplisitte kompileringsverdier

Hvis bruken av miljøene slik det er skissert ovenfor, av en eller annen grunn ikke resulterer i det ønskede oppsettet, så er det mulig for en bunt å eksplisitt liste de innstillingene den krever. Hvis du for eksempel har en bunt som bruker J2SE-1.4 med assert, så må kilde- og målnivåene være 1.4, i stedet for standardene 1.3 og 1.2.

For å definere java-kilde- og målnivåene bør bunten definere egenskapene javacSource og javacTarget i den tilhørende build.properties-filen. Disse egenskapene overstyrer verdiene som avledes fra miljøinnstillingene.

På samme måte vil definering av egenskapen bootClasspath i buntens build.properties-fil overstyre settet av jar-filer som bunten kompileres mot.