Aangepaste buildstappen voor features en plugins
Nieuw in 3.2 is de mogelijkheid voor een feature of plugin om aangepaste stappen aan de eigen build toe te voegen. Deze aangepaste stappen kunnen worden gebruikt voor dingen als het aansturen van byte-code na compilatie, het indexeren van helpbestanden voor documentatie of het kopiëren van extra bestanden naar de bundel.
Als u aangepaste doelen wilt gebruiken, moet een feature of plugin de eigenschap customBuildCallbacks definiëren in het bestand build.properties. De waarde van deze eigenschap is de locatie van een XML-bestand, die verwijst naar de hoofdmap van de feature/plugin, met de aangepaste doelen. Sjablonen genaamd
customBuildCallbacks.xml
die de ondersteunde aangepaste doelen bevatten, worden meegeleverd in respectievelijk org.eclipse.pde.build/templates/plugins en
org.eclipse.pde.build/templates/features. Deze sjablonen kunnen naar uw feature/plugin worden gekopieerd en desgewenst worden gewijzigd. De aangepaste doelen worden aangeroepen met behulp van de sub-ANT-taak met de instelling failonerror="false", zodat de build kan worden voorgezet als het aangepaste XML-bestand een bepaald doel niet bevat of wanneer een fout optreedt.
Plugins
De gegenereerde build.xml die een plugin opbouwt, bevat meerdere doelen die specifieke taken uitvoeren. PDE Build biedt de plugin de mogelijkheid om pre- en postdoelen te verstrekken die voor en na specifieke taken worden aangeroepen. Ter aanvulling op ant-eigenschappen die mogelijk al zijn gedefinieerd, kan aan elk aangepast doel ook een aantal specifieke eigenschappen worden doorgegeven. De volgende doelen ondersteunen aangepaste callbacks:
- build.jars: Het doel
build.jars roept één voor één elk van de compilatiedoelen op die voor deze bundel worden gebouwd. Het ondersteuntpre.build.jars- en post.build.jars-doelen die worden aangeroepen voordat en nadat alle compilatiedoelen zijn aangeroepen.
Zowel de pre- als de postdoelen worden geleverd met de eigenschap build.result.folder. Dit is de map waarnaar de resultaten van de build worden gekopieerd.
- Compilatiedoelen:
De build.xml definieert een compilatiedoel voor elke JAR die wordt gebouwd (bijvoorbeeld @dot voor de bundel zelf, of library.jar). Elk compilatiedoel ondersteunt 3 aangepaste callbacks:
- pre.<compilatiedoel>:
Wordt aangeroepen voordat bronbestanden worden gecompileerd. Dit wordt geleverd met de volgende eigenschappen:
- target.folder: de map waarin de gecompileerde klassebestanden worden geplaatst.
- source.folder<N>: de bronmap(pen) met de bron die moet worden gecompileerd (bijvoorbeeld source.folder1, source.folder2,
enzovoort).
- <compilatiedoel>.classpath: een verwijzing naar de Ant-padstructuur met het klassenpad dat in de compilatie wordt gebruikt (bijvoorbeeld @dot.classpath, library.jar.classpath).
- post.compile.<compilatiedoel>: wordt aangeroepen nadat de bron is gecompileerd, maar voordat van de klassenbestanden JAR-bestanden zijn gemaakt of ze naar de resultatenmap van de build zijn gekopieerd.
Het wordt geleverd met dezelfde eigenschappen als het doel pre.<compilatiedoel>.
- post.<compilatiedoel>:
Wordt aangeroepen aan het eind van het compilatiedoel nadat de resultaten naar de resultatenmap van de build zijn gekopieerd. Dit wordt geleverd met de volgende eigenschappen:
- jar.Location: het JAR-bestand of de map met de compilatieresultaten.
- <compilatiedoel>.classpath: een verwijzing naar de Ant-padstructuur met het klassenpad dat in de compilatie is gebruikt.
- build.sources: dit doel bouwt de zip-bronbestanden voor elk van de compilatiedoelen. Het ondersteunt pre.build.sources- en post.build.sources-doelen. Deze beide doelen worden geleverd met de eigenschap property build.result.folder. Dit is de map waarnaar de zip-bronbestanden worden gekopieerd.
- gather.bin.parts:
dit doel kopieert de resultaten van de build (de JAR- en alle andere bestanden die in de bundel worden opgenomen) naar de definitieve doeldirectory.
Het is ook het doel waar de versiekwalificaties opnieuw worden geplaatst in het manifestbestand (zie Versiekwalificaties). Het ondersteunt pre.gather.bin.parts- en post.gather.bin.parts-doelen. Er worden twee eigenschappen geleverd voor de pre- en postdoelen:
- build.result.folder: de map met de resultaten van de build
- target.folder: de doelmap waarnaar de buildresultaten en bundelcontent worden gekopieerd.
- gather.sources: dit doel verzamelt de ZIP-bronbestanden voor de bundel. Het ondersteunt de doelen pre.gather.sources en post.gather.sources.
Zowel de pre- als de postdoelen worden geleverd met de eigenschap target.folder. Dit is de map waarnaar de resultaten van de build worden gekopieerd.
- gather.logs: dit doel verzamelt de logboekbestanden van de build. Het ondersteunt pre.gather.logs en post.gather.logs. Zowel de pre- als de post-doelen worden geleverd met de destination.temp.folder. Dit is de tijdelijke map waarnaar de logboekbestanden worden gekopieerd.
- clean: dit doel voert een opschoningsbewerking uit. Het ondersteunt de doelen pre.clean en post.clean.
De pre- en post-doelen hebben de volgende eigenschappen:
- plugin.destination: de map waarnaar de definitieve bundel is gekopieerd.
- build.result.folder: de map waarnaar de resultaten van de build zijn gekopieerd.
- temp.folder: de tijdelijke map waarin de resultaten zijn klaargezet voordat deze naar de definitieve bestemming worden gekopieerd.
Functies
De gegenereerde build.xml voor features ondersteunt alleen aangepaste buildcallbacks voor het doel gather.bin.parts. Dit doel zal het doel gather.bin.parts van alle opgenomen features en plugins aanroepen. Het ondersteunt pre.gather.bin.parts en
post.gather.bin.parts. Deze doelen worden beide geleverd met de volgende eigenschappen:
- destination.temp.folder: de directory waarnaar de plugins worden gekopieerd.
- feature.directory: de directory waarnaar de bestanden voor deze feature worden gekopieerd.