Metadata for en bestemt funktion eller et bestemt bundt kan være forskellige, afhængig af hvordan de genereres. Det gælder især ved tilpasning af metadata, eller når funktioner bidrager med rodfiler.
Derfor er det altid en god idé at genbruge metadata, når det er muligt, i stedet for at generere dem igen, baseret på binære funktioner og bundter, du muligvis ikke er ejer af.
Der er en Ant-opgave, <p2.repo2runnable>, som transformerer funktions- og bundtartefakter til deres installerede format. Generelt er det den form, som plugins skal have, hvis man skal kunne kompilere op imod dem. Denne opgave giver mulighed for nemt at genanvende opbevaringssteder fra andre projekter i bygningen. PDE/Build har indbygget integration med denne opgave via følgende egenskaber:
repoBaseLocation | En folder, der indeholder opbevaringssteder, som skal transformeres. Denne folder kan indeholde pakkede opbevaringssteder samt underfoldere, der er opbevaringssteder. |
transformedRepoLocation | Den folder, hvor de transformerede artefakter bliver placeret. Denne folder bliver derefter selv et p2-opbevaringssted. |
build.properties: repoBaseLocation=${buildDirectory}/inputRepositories transformedRepoLocation=${buildDirectory}/transformedRepo customTargets.xml: <target name="preProcessRepos"> <p2.mirror source="http://download.eclipse.org/releases/galileo" destination="file:${repoBaseLocation}/mirrored"> <iu id="org.eclipse.equinox.p2.user.ui.feature.group" /> <iu id="org.eclipse.cdt.feature.group"/> </p2.mirror> <property name="RCP.Repo-3.5RC3" value="http://download.eclipse.org/eclipse/downloads/drops/S-3.5RC3-200905282000/org.eclipse.rcp-p2repo-3.5RC3.zip" /> <property name="Equinox.Repo-3.5RC3" value="http://download.eclipse.org/equinox/drops/S-3.5RC3-200905282000/equinox-SDK-3.5RC3.zip" /> <get src="${RCP.Repo-3.5RC3" dest="${repoBaseLocation}/org.eclipse.rcp-p2repo-3.5RC3.zip" /> <get src="${Equinox.Repo-3.5RC3" dest=""${repoBaseLocation}/eclipse-equinox-3.5RC3.zip" /> </target>I skrivende stund kendes placeringen af de endelige pakkede 3.5-filer ikke. URL'erne her tjener kun som et eksempel og findes muligvis ikke i fremtiden.
PDE/Build kalder først det tilpassede preProcessRepos-mål. Derefter kaldes Ant-opgaven repo2runnable for at transformere disse overførte opbevaringssteder til et format, der kan genbruges i bygningen.
Egenskaben transformedRepoLocation, som definerer placeringen af outputtet for denne transformering, tjenester også som kontekstopbevaringssted.
Egenskaben p2.context.repos er en kommasepareret liste over opbevaringssteder, der fungerer som kontekst for bygningen.
Ved generering af metadata konsulterer bygningen først kontekstopbevaringsstederne for at se, om der allerede findes metadata for funktionen eller plugin'en. Hvis der allered findes metadata, kopieres de til det lokale opbevaringssted for bygningen (${p2.build.repo}), i stedet for at der genereres nye metadata.
Og hvis funktioner, bundter eller produkter har tilpasset deres metadata, så de afhænger af noget, der ikke er inkluderet i bygningen, udfører PDE/Build en spejling af kontekstopbevaringsstederne. Denne spejling inkluderer alle IU'er (installable units - installérbare enheder), der er tilføjet til funktions- eller plugin-metadata.