Layout af funktionsmetadata

PDE-byggeprogrammet har altid brugt funktioner som en slags grupperingsmekanisme, der angiver, nøjagtigt hvad der skal bygges. Med p2 er denne idé med at bruge en funktion som en gruppe blevet udvidet, hvilket medfører, at der genereres mere end én IU (installable unit - installérbar enhed) pr. funktion.

Fra byggeprogrammets perspektiv bidrager en funktion med tre ting:

Når vi bruger den metadatagenerator, der blev introduceret i 3.4, ender vi med følgende struktur for funktionen org.example.platform":

org.example.platform.feature.group Det er grupperings-IU'en på øverste niveau for funktionen. Den vil have krav på alle de funktioner og plugins, der var inkluderet og krævet af feature.xml. Den inkluderer også et krav på den indlejrede org.example.platform.feature.jar.
org.example.platform.feature.jar Det er IU'en, der repræsenterer selve funktionens JAR-fil. Den har et LDAP-filter
"(org.eclipse.update.install.features=true)",
som bevirker, at funktionens JAR-fil kun installeres, hvis profilen definerer denne egenskab. Denne IU har også et krav på det faktiske org.example.platform_1.0.0.jar-artefakt.

Hvis funktionen ikke definerer bin.includes" i filen build.properties, bliver denne funktions JAR-IU ikke genereret.

Bemærk, at denne IU-struktur ikke inkluderer noget for de rodfiler, som funktionen bidrager med. I stedet har en bygning, der bruger metadatagenerering, placeret alle rodfilerne samlet i én enkelt IU og ét enkelt artefakt.

Noget nyt i 3.5 er p2-udgiveren. Hvis vi bruger PDE-byggeprogrammets eclipse.gatherFeature-opgave til at publicere funktionen fra kilden, får vi i stedet rodfils-IU'er, der svarer til den funktion, som har bidraget med dem. I dette tilfælde ender vi med følgende metadata:

org.example.platform.feature.groupGrupperings-IU på øverste niveau for funktionen.
org.example.platform.feature.jarFunktionens JAR-IU.
org.example.platform_root
org.example.platform_root.<ws>.<os>.<arch>
Dette er rodfil-IU'erne. feature.group inkluderer én rod-IU pr. platform, hvor funktionen bidrager med filer. Selve rod-IU'en har et krav på det faktiske binære artefakt fra et p2-artefaktopbevaringssted (f.eks. binary/org.example.platform_root.gtk.linux.x86_1.0.0), der indeholder filerne.

Hvis du bruger den nye p2-udgiver i stedet for den gamle metadatagenerator, kan du meget mere detaljere styre, hvordan rodfiler leveres for produkter.