Som standard kompilerer PDE/Build plugins ved at delegere gennem funktionsstrukturen. Funktioner besøges først i dybden, plugins i de enkelte funktioner kompileres i afhængighedsrækkefølge (afgøres af OSGi-resolveren).
Det betyder, at alle afhængigheder af et bestemt bundt skal være indeholdt i samme funktion eller i en funktion, der forekommer tidligere i dybde-først-krydsningen af funktionsinkluderingshierarkiet. Det kan gøre det svært at organisere funktionerne.
Noget nyt i 3.5 er en byggeprogramegenskab, flattenDependencies. Hvis du indstiller denne egenskab til true, vil PDE/Build i stedet sortere alle plugins uden hensyn til funktionsgrænser. PDE/Build vil derefter generere et nyt byggescript, compile.<feature>.xml, som indeholder en liste over alle plugins i rækkefølge, sorteret efter deres afhængigheder. Herved kan du partitionere dine bundter i forskellige funktioner i forhold til deres funktionalitet uden at bekymre dig om deres indbyrdes afhængigheder.
Hvis flattenDependencies er angivet, kan PDE/Build kompilere bundter parallelt. Det sker ved at partitionere den sorterede liste med bundter i grupper, hvor hver gruppe indeholder bundter, der kun er afhængige af bundter i tidligere grupper.
Hver gruppe er derefter indpakket i en <parallel> Ant-opgave. Følgende egenskaber kontrollerer funktionsmåden af parallelliseringen:
parallelCompilation | Angiv til true for at aktivere parallel kompilering. (Kræver flattenDependencies=true) |
parallelThreadCount | Det maksimale antal programdele, der skal anvendes. Standardværdien er 3. Svarer til threadCount på den parallelle Ant-opgave. |
parallelThreadsPerProcessor | Det maksimale antal programdele, der skal anvendes pr. tilgængelig processor. Svarer til threadsPerProcessor på den parallelle Ant-opgave. |
Det kompilerede script, der genereres, ser nogenlunde sådan ud:
<project name="Kompileringsmaster" default="main"> <target name="main"> <parallel threadsPerProcessor='3'> <ant antfile="build.xml" dir="plugins/org.eclipse.osgi" target="build.jars"/> </parallel> <parallel threadsPerProcessor='3'> <ant antfile="build.xml" dir="plugins/org.eclipse.equinox.common" target="build.jars"/> <ant antfile="build.xml" dir="plugins/org.eclipse.equinox.p2.jarprocessor" target="build.jars"/> </parallel> <parallel threadsPerProcessor='3'> <ant antfile="build.xml" dir="plugins/org.eclipse.update.configurator" target="build.jars"/> <ant antfile="build.xml" dir="plugins/org.eclipse.equinox.simpleconfigurator" target="build.jars"/> <ant antfile="build.xml" dir="plugins/org.eclipse.equinox.frameworkadmin" target="build.jars"/> <ant antfile="build.xml" dir="plugins/org.eclipse.core.jobs" target="build.jars"/> <ant antfile="build.xml" dir="plugins/org.eclipse.core.databinding.observable" target="build.jars"/> <ant antfile="build.xml" dir="plugins/org.eclipse.swt" target="build.jars"/> ...