Définition de l'environnement de compilation

Par défaut, les bundles sont compilés avec l'environnement JRE utilisé pour exécuter la génération, et avec les niveaux source et cible 1.3 et 1.2.

La compilation PDE peut configurer l'environnement JRE utilisé lors de la compilation de chaque bundle.  Pour en tirer parti, vous devez avant tout chose indiquer à la compilation PDE les environnements JRE disponibles.  Dans le fichier build.properties de configuration de la génération, faites pointer les propriétés vers chacun des environnements JRE installés.  Le modèle de fichier build.properties fourni dans org.eclipse.pde.build/templates/headless-build contient la liste des environnements mis en commentaires.  Supprimez simplement la mise en commentaire des propriétés pour lesquelles vous disposez d'environnements JRE, et définissez la valeur des fichiers JAR qui figurent dans le chemin de classes d'amorçage.  Par exemple, la définition de la propriété :

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

compile les bundles nécessitant Java 1.5 par rapport à rt.jar et jsse.jar. Les noms des propriétés doivent correspondre aux noms des environnements que la compilation PDE connaît.   La compilation PDE définit automatiquement les niveaux source et cible de chaque environnement.  Les environnements que connaissent les générations PDE et leurs niveaux source/cible associés sont les suivants :

Environnement
Source
Cible
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

Sélection de l'environnement du bundle

Deux paramètres affectent l'environnement utilisé pour compiler le bundle. Le premier est l'en-tête de manifeste Bundle-RequiredExecutionEnvironment.  Cet en-tête correspond à la liste des environnement dans lesquels le bundle peut être exécuté.  Le bundle doit utiliser uniquement les méthodes figurant dans le sous-groupe approprié de tous les environnements listés. Il est préférable que l'environnement de compilation corresponde autant que possible à l'environnement d'exécution.

Le second paramètre est la propriété jre.compilation.profile du fichier build.properties du bundle.  La valeur de ce paramètre doit correspondre à l'environnement préféré de compilation du bundle si la liste Bundle-RequiredExecutionEnvironment n'est pas adéquate.

Ces deux paramètres forment ensemble une liste d'environnements, jre.compilation.profile d'abord, puis les environnements de Bundle-RequiredExecutionEnvironment.  Le premier environnement de la liste, qui est disponible dans la configuration de génération (voir la section ci-dessus), est utilisé pour compiler le bundle.

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

Dans la configuration ci-dessus, la liste des environnements considérée (dans l'ordre) est : J2SE-1.4,  CDC-1.0/Foundation-1.0, J2SE-1.3.  Le bundle peut être exécuté dans CDC/Foundation et J2SE-1.3, mais pour certaines raisons,  il doit être compilé avec J2SE-1.4.  Dans ce cas, J2SE-1.4 est défini dans la configuration de génération, et figure en premier dans la liste des environnements ; par conséquent il est utilisé pour compiler le bundle.  Dans ce cas, les niveaux source et cible 1.3 et 1.2 sont utilisés.  Si la configuration de la compilation définit J2SE-1.3, mais pas J2SE-1.4, J2SE-1.3 est le seul environnement de la liste pour lequel un environnement JRE est disponible. Par conséquent, il est utilisé pour compiler le bundle.  Dans ce cas, les niveaux source et cible 1.3 et 1.1 sont utilisés.

Définition explicite des valeurs de compilation

Si, pour une raison ou pour une autre, l'utilisation des environnements, comme indiqué ci-dessus, ne donne pas la configuration désirée, un bundle peut lister de manière explicite les paramètres dont il a besoin.  Par exemple, si vous disposez d'un bundle qui utilise J2SE-1.4 avec des assertions, les niveaux source et cible doivent correspondre à 1.4, et non pas aux niveaux par défaut 1.3 et 1.2.

Pour définir explicitement les niveaux source et cible Java, le bundle doit définir les propriétés javacSource et javacTarget dans son fichier de propriétés build.properties.  Ces propriétés remplacent les valeurs issues des paramètres d'environnement.

De même, la définition de la propriété bootClasspath dans le fichier build.properties du bundle remplace le groupe de fichiers JAR par rapport auquel le bundle est compilé.