Etapy procesu niestandardowego budowania składników i wtyczek
Nowością w wersji 3.2 jest możliwość dodawania niestandardowych kroków do procesu budowania przez same składniki lub wtyczki, których proces dotyczy. Kroki niestandardowe mogą być używane na przykład do instrumentacji kodu bajtowego po kompilacji, indeksowania plików pomocy w dokumentacji lub kopiowania dodatkowych plików do pakietu.
Aby było możliwe korzystanie z celów niestandardowych, w pliku build.properties wtyczki lub składnika musi być zdefiniowana wartość właściwości customBuildCallbacks; wartość tej właściwości określa położenie (względem katalogu głównego danego składnika lub wtyczki) pliku XML zawierającego cel niestandardowy. W katalogach org.eclipse.pde.build/templates/plugins i org.eclipse.pde.build/templates/features dostarczone są szablony o nazwie customBuildCallbacks.xml odpowiednio dla wtyczek i składników. Szablony te można skopiować do katalogu danego składnika/wtyczki i zmodyfikować stosownie do potrzeb. Cele niestandardowe są wykorzystywane przez zadanie subant z parametrem failonerror="false", dzięki czemu proces budowania nie jest przerywany, jeśli dostarczony plik custom xml nie zawiera określonego celu lub zostanie stwierdzony błąd.
Wtyczki
Wygenerowany plik build.xml używany do budowania wtyczki zawiera kilka celów wykonujących określone zadania. Moduł PDE Build umożliwia wtyczkom dostarczanie niestandardowych celów wstępnych i końcowych, wykonywanych odpowiednio przed i po wykonaniu określonych zadań. Poza ewentualnymi zdefiniowanych właściwościami środowiska ant, każdemu celowi można również przekazać kilka właściwości specjalnych. Następujące cele obsługują niestandardowe wywołania zwrotne:
- build.jars: Cel build.jars wywołuje kolejno wszystkie cele kompilacji zdefiniowane dla bieżącego pakietu. Obsługiwane są cele pre.build.jars i post.build.jars, które są wywoływane przed i po wywołaniu celów kompilacji. Cele początkowe i końcowe udostępniają właściwość build.result.folder, określającą folder, do którego zostaną skopiowane wyniki procesu budowania.
- Cele kompilacji: w pliku build.xml zdefiniowany jest cel kompilacji dla każdego budowanego pliku JAR (np. @dot dla samego pakietu, lub library.jar). Każdy cel kompilacji obsługuje 3 niestandardowe wywołania zwrotne:
- pre.<cel kompilacji>: wywoływane przed kompilacją plików źródłowych. Wywołanie udostępnia następujące właściwości:
- target.folder: folder, w którym zostaną zapisane skompilowane pliki klas
- source.folder<N>: folder lub foldery źródłowe zawierające kompilowany kod źródłowy (n p.source.folder1, source.folder2 itd.)
- <cel kompilacji>.classpath: odwołanie do struktury ścieżki środowiska ant zawierającej ścieżkę klas używaną podczas kompilacji (np. @dot.classpath, library.jar.classpath)
- post.compile.<cel kompilacji>: wywoływane po skompilowaniu źródła, ale przed archiwizacją plików klas do plików JAR i skopiowaniem ich do folderu wyników procesu budowania. Wywołanie udostępnia te same możliwości, co cel pre.<cel kompilacji>.
- post.<cel kompilacji>: wywoływane po zakończeniu wykonania celu kompilacji i po skopiowaniu wyników do folderu wyników procesu budowania. Wywołanie udostępnia następujące właściwości:
- jar.Location: plik JAR lub folder zawierający wyniki kompilacji.
- <cel kompilacji>.classpath: odwołanie do struktury ścieżki środowiska ant zawierającej ścieżkę klas używaną podczas kompilacji.
- build.sources: cel budujący pliki ZIP z kodem źródłowym dla każdego z celów kompilacji. Obsługiwane są cele pre.build.sources i post.build.sources. Oba te cele udostępniają właściwość build.result.folder, określającą folder, do którego zostaną skopiowane pliki ZIP zawierające kod źródłowy.
- gather.bin.parts: cel kopiuje wyniki procesu budowania (tzn. pliki JAR i wszelkie inne pliki dołączane do pakietu) do ostatecznego katalogu docelowego. W przypadku tego celu kwalifikatory wersji w pliku manifestu są zastępowane (patrz Kwalifikatory wersji). Obsługiwane są cele pre.gather.bin.parts i post.gather.bin.parts. Cele wstępne i końcowe udostępniają dwie właściwości:
- build.result.folder: zawierający wyniki procesu budowania
- target.folder: folder docelowy, do które kopiowane są wyniki procesu budowania i zawartość pakietu.
- gather.sources: cel zbierający wymagane przez pakiet pliki ZIP z kodem źródłowym. Obsługiwane są cele pre.gather.sources i post.gather.sources. Cele początkowe i końcowe udostępniają właściwość target.folder, określającą folder, do którego zostaną skopiowane pliki z kodem źródłowym.
- gather.logs: cel zbierający pliki dziennika procesu budowania. Obsługiwane są cele pre.gather.logs i post.gather.logs. Cele początkowe i końcowe udostępniają właściwość destination.temp.folder, określającą folder tymczasowy, do którego zostaną skopiowane pliki dziennika.
- clean: cel wykonujący czyszczenie; obsługiwane są cele pre.clean i post.clean. Cele wstępny i końcowy mają następujące właściwości:
- plugin.destination: folder do którego został skopiowany ostateczny pakiet.
- build.result.folder: folder do którego zostały skopiowane wyniki procesu budowania
- temp.folder: folder tymczasowy, w którym wyniki były zapisane przed ich skopiowaniem do położenia ostatecznego.
Składniki
Plik build.xml generowany dla składników obsługuje niestandardowe wywołania zwrotne jedynie w przypadku celu gather.bin.parts. Cel ten będzie wywoływał cel gather.bin.parts dla wszystkich dołączanych składników i wtyczek. Obsługiwane są cele pre.gather.bin.parts i post.gather.bin.parts. Oba te cele udostępniają następujące właściwości:
- destination.temp.folder: katalog do którego zostaną skopiowane wtyczki.
- feature.directory: katalog do którego zostaną skopiowane pliki danego składnika.