Статьи

Безголовая сборка для начинающих — часть II

 Плагины редко требуются для изоляции. Лучший способ их создания — это использование функций. Конечно, функции более полезны с точки зрения распространения и развертывания. Функция создается так же, как и плагин. Включите необходимые плагины в файл feature.xml и создайте файл build.xml из файла build.properties (щелкните правой кнопкой мыши и выберите «Инструменты PDE»). Теперь запустите функцию сборки.

java -jar <путь-установки-eclipse> \ plugins \ org.eclipse.equinox.launcher_ <версия> <квалификатор> .jar -application org.eclipse.ant.core.antRunner -buildfile <путь-eclipse-workspace-путь> \ < Feature-Project-Path> \ <build-xml-path> 

java -jar C:\eclipse\plugins\org.eclipse.equinox.launcher_1.1.0.v20100507.jar 
-application org.eclipse.ant.core.antRunner
-buildfile C:\workspace\com.example.helloworld.feature\build.xml

Обратите внимание, что сборка завершится неудачей, если во включенных плагинах не будет создан build.xml для них. Это маловероятный сценарий и определенно не так, как это делается. Но пусть это будет на время. Сгенерируйте build.xml для всех плагинов для успешной сборки. Позже мы увидим, как это можно сделать без этого.

Передача параметров в AntRunner из командной строки

Сборка, сгенерированная вышеуказанной командой, оставит jar-компонент внутри проекта-компонента, а jar-файл плагина внутри папки проекта плагина. Конечно, они не должны разбрасываться вокруг. Их нужно собрать в одном месте.

Откройте build.xml для проекта плагина, и внутри цели ‘init’ есть одно свойство, называемое ‘plugin.destination’. Именно в этом месте jar-файл, наконец, создается целью build.update.jar.

<property name="plugin.destination" value="${basedir}"/>

Измените значение этого свойства на «$ {buildDirectory}». Сделайте аналогичное изменение для свойства feature.destination в build.xml для проекта компонента.

Если сборка запущена сейчас, она потерпит неудачу, потому что не может найти значение для ‘buildDirectory’. Значение может быть предоставлено через командную строку, используя опцию -D.

java -jar <путь-установки-eclipse> \ plugins \ org.eclipse.equinox.launcher_ <версия> <квалификатор> .jar -application org.eclipse.ant.core.antRunner -buildfile <путь-eclipse-workspace-путь> \ < feature-project-path> \ <build-xml-path> -DbuildDirectory = <build-storage-location> 

java -jar C:\eclipse\plugins\org.eclipse.equinox.launcher_1.1.0.v20100507.jar 
-application org.eclipse.ant.core.antRunner
-buildfile C:\workspace\com.example.helloworld.feature\build.xml
-DbuildDirectory=c:\build\buildOutput

Когда сборка будет запущена, $ {buildDirectory} будет заменен предоставленным значением (местоположением), и там будут созданы jar-файлы.

Дополнительные параметры можно указать, используя -D <имя-переменной> = <значение> из командной строки.

Файл свойств Ant

Передача параметров из командной строки не очень масштабируема или не поддерживается. Лучший способ — передать параметры с помощью файла свойств.

Создайте файл свойств, скажем, «custom_build.properties» внутри папки, скажем, «buildConfiguration». Имя «custom_build.properties» было выбрано, чтобы отличить его от «build.properties». Обратите внимание, что, хотя оба являются файлом свойств типа name = value, обычно (довольно лучше) не смешивать их. Поскольку «build.properties» имеет особое значение в контексте PDE, рекомендуется использовать другое имя, чтобы избежать путаницы.

Сохраните свойство и его значение в файле свойств.

buildDirectory=c:/build/buildConfiguration 

Обратите внимание на косую черту вместо обратной. Обратные слеши тоже будут работать, но их нужно избегать.

Теперь откройте build.xml для проекта компонента и добавьте запись «loadproperties» под тегом «project».

<project name="com.example.helloworld.feature" default="build.update.jar" basedir=".">
<loadproperties srcfile="../../buildConfiguration/build.properties" />
...

Эта запись должна быть сделана только в build.xml проектного объекта и не требуется для build.xml подключаемых проектов. Они по-прежнему могут использовать одно и то же имя переменной и получат значение из файла свойств.

Обратите внимание, что значение для ‘srcfile’ является относительным путем, а ../../ (каталог grand-parent) указывает, что файл свойств был сохранен в одной папке вне папки (или рабочей области), содержащей проекты.

От http://blog.ankursharma.org/2010/06/headless-build-for-beginners-part-ii.htm l