Этапы пользовательской компоновки комплектов и модулей
В версии 3.2 появилась возможность добавлять в компоновку комплекта или модуля пользовательские этапы.
Это позволяет, например, встраивать байт-код после компиляции, индексировать документацию или копировать дополнительные файлы в комплект.
Для того чтобы использовать эти функции, необходимо определить свойство customBuildCallbacks в файле build.properties комплекта или модуля. Значение этого свойства - расположение файла xml относительно корневого каталога комплекта или модуля, содержащего пользовательские цели компоновки.
Шаблоны customBuildCallbacks.xml в каталогах org.eclipse.pde.build/templates/plugins и
org.eclipse.pde.build/templates/features содержат поддерживаемые пользовательские цели компоновки. Эти шаблоны можно скопировать в каталог комплекта или модуля и изменить соответственно требованиям.
Пользовательские цели компоновки можно вызвать как задачу subant с failonerror="false", чтобы компоновка продолжилась, если пользовательский файл xml не содержит указанной цели или возникнет ошибка.
Модули
Файл build.xml, применяемый для компоновки модуля, содержит несколько целей для выполнения определенных задач.
При компоновке в PDE модуль может определить цели, вызываемые до или после выполнения определенных задач.
Помимо уже заданных свойств ant цель компоновки может также работать с несколькими специальными свойствами.
Пользовательские функции поддерживаются для следующих объектов:
- build.jars: При вызове
build.jars будут вызваны все целевые объекты, указанные для компоновки этого комплекта.
Поддерживаются цели pre.build.jars и post.build.jars, вызываемые до или после вызова всех целей компиляции.
Оба эти вида целей могут работать со свойством build.result.folder, задающим папку, куда будут помещены результаты компоновки.
- Цели компиляции:
build.xml определяет цель компиляции для каждого создаваемого jar (например,
@dot для самого комплекта, или library.jar). Для каждой цели компиляции могут применяться три пользовательские функции:
- pre.<цель-компиляции>:
Вызывается перед компиляцией исходных файлов. Она принимает следующие свойства:
- target.folder: Папка для скомпилированных файлов классов
- source.folder<N>: Папки с исходным кодом.
(Например, source.folder1, source.folder2,
и т.д.).
- <цель-компиляции>.classpath: Ссылка на структуру
ant, содержащую путь к классам, который будет применяться при компиляции.
(примеры: @dot.classpath, library.jar.classpath)
- post.compile.<цель-компиляции>: Вызывается после компиляции исходного кода, но перед помещением файлов классов в JAR или целевые папки.
Для нее поддерживаются такие же свойства, как и для цели pre.<цель-компиляции>.
- post.<цель-компиляции>:
Вызывается после того, как результаты компиляции копируются в целевую папку.
Она принимает следующие свойства:
- jar.Location: JAR или папка с результатами компиляции.
- <цель-компиляции>.classpath: Ссылка на структуру
ant, содержащую путь к классам, который применялся при компиляции.
- build.sources: Эта цель предназначена для компоновки файлов zip с исходным кодом для каждой из целей компиляции.
Она поддерживает цели pre.build.sources
и post.build.sources.
Оба эти вида целей могут работать со свойством build.result.folder, задающим папку, куда будут помещены файлы zip.
- gather.bin.parts:
Эта цель предназначена для копирования результатов компоновки (JAR и прочих включаемых в комплект файлов) в конечный целевой каталог.
На этом этапе также заменяются спецификаторы версий в файле манифеста, как описано в разделе Спецификаторы версий. Она поддерживает цели pre.gather.bin.parts
и post.gather.bin.parts. Для целей pre и post предусмотрены два свойства:
- build.result.folder: папка для результатов компоновки
- target.folder: целевая папка, в которую будут скопированы результаты компоновки и содержимое комплекта.
- gather.sources: Эта цель предназначена для получения файлов zip с исходными кодами для комплекта. Она поддерживает цели pre.gather.sources
и post.gather.sources.
Оба эти вида целей могут работать со свойством target.folder, задающим папку, куда будут помещены исходные тексты.
- gather.logs: Эта цель предназначена для получения файлов протокола компоновки.
Она поддерживает цели pre.gather.logs
и post.gather.logs.
Оба эти вида целей могут работать со свойством destination.temp.folder, задающим папку, куда будут помещены файлы протокола.
- clean: Эта цель предназначена для очистки и поддерживает цели pre.clean
и post.clean targets. Цели pre и post принимают следующие свойства:
- plugin.destination: Папка, куда был скопирован комплект.
- build.result.folder: папка, куда были скопированы результаты компоновки
- temp.folder: Временная папка для хранения промежуточных файлов.
Функции
Сгенерированный build.xml для комплектов поддерживает только пользовательские функции для цели gather.bin.parts. Это цель вызывает цель gather.bin.parts всех включенных комплектов и модулей.
Она поддерживает pre.gather.bin.parts и
post.gather.bin.parts. Они принимают следующие свойства:
- destination.temp.folder: Каталог, куда будут скопированы модули.
- feature.directory: Каталог, куда будут скопированы файлы для этого комплекта.