Schritte zur Anpassung von Feature- und Plug-in-Erstellungen
In Version 3.2 haben Sie erstmals die Möglichkeit, einem Feature oder Plug-in angepasste Schritte zu seiner eigenen Erstellung hinzuzufügen. Diese angepassten Schritte können zum Beispiel zur Instrumentierung von Bytecode nach der Kompilierung, zur Indexierung von Hilfedateien für die Dokumentation oder zum Kopieren von zusätzlichen Dateien in das Produktpaket verwendet werden.
Für die Verwendung von Standardzielen muss für ein Feature oder Plug-in die Eigenschaft customBuildCallbacks in der zugehörigen Datei 'build.properties' definiert sein; der Wert für diese Eigenschaft ist die Speicherposition einer XML-Datei, in Bezug auf das Stammverzeichnis des Features bzw. Plug-ins, in dem die angepassten Ziele enthalten sind.
Die Schablonen mit dem Namen customBuildCallbacks.xml, in denen die unterstützten angepassten Ziele enthalten sind, befinden sich in 'org.eclipse.pde.build/templates/plugins' bzw. in 'org.eclipse.pde.build/templates/features'. Diese Schablonen können in das Feature oder Plug-in kopiert und nach Bedarf verändert werden. Die angepassten Ziele werden unter Verwendung der Task 'subant' mit 'failonerror="false"' aufgerufen, so dass die Erstellung auch dann fortgesetzt wird, wenn die angepasste XML-Datei kein konkretes Ziel enthält oder ein Fehler auftritt.
Plug-ins
Die generierte Datei 'build.xml', die ein Plug-in erstellt, enthält mehrere Ziele, die bestimmte Tasks ausführen. Die PDE-Erstellung ermöglicht dem Plug-in die Bereitstellung von angepassten 'pre'- und 'post'-Zielen, die vor und nach bestimmten Tasks aufgerufen werden.
Zusätzlich zu Ant-Eigenschaften, die unter Umständen bereits definiert sind, kann auch an jedes angepasste Ziel eine Reihe bestimmter Eigenschaften übergegeben werden.
Die folgenden Ziele unterstützen angepasste Callbacks:
- build.jars: Das Ziel 'build.jars' ruft wiederum jedes Kompilierungsziel auf, das für dieses Produktpaket erstellt wird. Es unterstützt die Ziele pre.build.jars und post.build.jars, die aufgerufen werden, nachdem und bevor alle Kompilierungsziele aufgerufen werden. Die 'pre'- und 'post'-Ziele werden mit der Eigenschaft build.result.folder bereitgestellt; hierbei handelt es sich um den Ordner, in den die Ergebnisse der Erstellung kopiert werden.
- Kompilierungsziele: In der Datei 'build.xml' ist ein Kompilierungsziel für jede JAR-Datei definiert, die erstellt wird (zum Beispiel '@dot' für das Produktpaket selbst oder 'library.jar'). Jedes Kompilierungsziel unterstützt drei Callbacks:
- pre.<compilation target>: Wird aufgerufen, bevor die Quellendateien kompiliert werden. Es verfügt über die folgenden Eigenschaften:
- target.folder: Der Ordner, in dem die kompilierten Klassendateien gespeichert werden.
- source.folder<N>: Der bzw. die Quellenordner, in dem/denen die Quelle enthalten ist, die kompiliert werden soll. (Beispiele: source.folder1, source.folder2, etc)
- <compilation target>.classpath: Ein Verweis auf die Ant-Pfadstruktur, in der der Klassenpfad enthalten ist, der für die Kompilierung verwendet wird. (Beispiele:@dot.classpath, library.jar.classpath)
- post.compile.<compilation target>: Wird nach der Kompilierung der Quelle aufgerufen, aber bevor die Klassendateien als JAR-Dateien vorliegen oder in den Ergebnisordner der Erstellung kopiert werden. Es verfügt über dieselben Eigenschaften wie das Ziel 'pre.<compilation target>'.
- post.<compilation target>: Wird am Ende des Kompilierungsziels aufgerufen, nachdem die Ergebnisse in den Ergebnisordner der Erstellung kopiert wurden.
Es verfügt über die folgenden Eigenschaften:
- jar.Location: Die JAR-Datei oder der Ordner, in der/dem die Kompilierungsergebnisse enthalten sind.
- <compilation target>.classpath: Der Verweis auf die Ant-Pfadstruktur, in der der Klassenpfad enthalten ist, der für die Kompilierung verwendet wurde.
- build.sources: Dieses Ziel erstellt die komprimierten Quellendateien für jedes Kompilierungsziel. Es unterstützt die Ziele pre.build.sources und post.build.sources. Diese beiden Ziele verfügen über die Eigenschaft 'build.result.folder', den Ordner, in den die komprimierten Quellendateien kopiert werden.
- gather.bin.parts: Dieses Ziel kopiert die Erstellungsergebnisse (d. h. die JAR-Dateien und alle anderen Dateien, die in dem Produktpaket enthalten sind) in das Zielortverzeichnis. In diesem Ziel werden auch die Qualifikationsmerkmale für die Version in der Manifestdatei ersetzt (siehe Qualifikationsmerkmale für die Version). Es unterstützt die Ziele pre.gather.bin.parts
und post.gather.bin.parts.
Die 'pre'- und 'post'-Ziele verfügen über zwei Eigenschaften:
- build.result.folder: Der Ordner, in dem die Ergebnisse der Erstellung enthalten sind.
- target.folder: Der Zielordner, in den die Erstellungsergebnisse und Produktpaketinhalte kopiert werden.
- gather.sources: Dieses Ziel erfasst die komprimierten Quellendateien für das Produktpaket. Es unterstützt die Ziele pre.gather.sources und post.gather.sources. Die 'pre'- und 'post'-Ziele verfügen jeweils über die Eigenschaft 'target.folder', den Ordner, in den die Quellen kopiert werden.
- gather.logs: Dieses Ziel erfasst die Protokolldateien der Erstellung. Es unterstützt die Ziele pre.gather.logs und post.gather.logs. Die 'pre'- und 'post'-Ziele verfügen jeweils über die Eigenschaft 'destination.temp.folder', den temporären Ordner, in den die Protokolldateien kopiert werden.
- clean: Dieses Ziel führt eine Bereinigung durch und unterstützt die Ziele pre.clean und post.clean. Die 'pre'- und 'post'-Ziele verfügen über die folgenden Eigenschaften:
- plugin.destination: Der Ordner, in den das endgültige Produktpaket kopiert wurde.
- build.result.folder: Der Ordner, in den die Ergebnisse der Erstellung kopiert wurden.
- temp.folder: Der temporäre Ordner, in dem die Ergebnisse bereitgestellt wurden, bevor sie an die endgültige Zielposition kopiert wurden.
Features
Die generierte Datei 'build.xml' für die Features unterstützt nur angepasste Erstellungs-Callbacks für das Ziel 'gather.bin.parts'. Dieses Ziel ruft das Ziel 'gather.bin.parts' mit allen enthaltenen Features und Plug-ins auf. Es unterstützt 'pre.gather.bin.parts' und 'post.gather.bin.parts'. Diese beiden Ziele verfügen jeweils über die folgenden Eigenschaften:
- destination.temp.folder: Das Verzeichnis, in das die Plug-ins kopiert werden.
- feature.directory: Das Verzeichnis, in das die Dateien für dieses Feature kopiert werden.