понедельник, 16 ноября 2009 г.

OSGI ant bnd fuck

bnd
это такая jar ка
 http://www.aqute.biz/Code/Download

Зачем bnd?
Умеет делать красивый манифест с импортами и экспортами по спецификации OSGI и jar.

Нада bnd?
Вообще нет. Основная фишка что он автоматически умеет вписывать пэкэджи в манифест.

Как bnd?
Тулза используется в ряде фрэймворков для генерации jar под OSGI. В анте она работает так -
лезит в спец файл(обычно он имеет расширение .bnd) и получает оттуда пути всех используемых в билде jar и маски импортов-экспортов, на основе чего генерит манифест и jar.



Чё bnd?

 Про то как билдить антом с использованием bnd тулзы написано на http://www.aqute.biz/Code/Bnd. Пример на http://www.aqute.biz/uploads/Snippets/aQute.bundleclasspath.jar. Написано мало и пример чтобы разобрать - надо постараться. Больше ничего полезного не нашёл. 
Зы. Чтобы понять про то, что написано в этой заметке нужно прочитать http://www.aqute.biz/Code/Bnd.

Сторонии либы и bnd.
Есть два варианта как можно использовать сторонии либы:
1)стороняя либа должна быть плагином(см Оборачивания библиотек с bnd.)
2)стороняя либа должна быть всосана в jar плагина - делается это путём добавления в bnd файл
строк типа

Import-Package: *
Bundle-ClassPath: .,xxx.jar
Include-Resource:lxxx.jar

Компиляция с bnd.
Сначала нада добавить таски для анта в build.xml:
taskdef resource="aQute/bnd/ant/taskdef.properties"
           classpath="${OsgiDemo.dir}/../../Tools/Bnd/bnd.jar"

Если удалось скомпилировать - не факт что удастся запустить, могут возникнуть траблы с импортами. Bnd не делает импорты для зависимостей привязанных библиотек. Как показывает практика DynamicImport-Package: * - это тоже не решает.

Оборачивания библиотек с bnd.
Пожалуй самая полезная и в тоже время простая для исполнения хня с bnd. Берём jar выполняем над ней ant скрипт(содержит что то типа
  bndwrap jars="log4j.jar" classpath="." output="."
 ) и в результате получаем мега jar c мега манифестом которую можно диплоить как плагин.

Пример c ant.
Пример делался под knopflerfish и содержит все jar необходимые для компиляции.
1)билдим антом
2)деплоим log4j.bar
3)деплоим OSGIDemo.jar
4)радуемся


Зы: Если раскоментарить в osgidemo.bnd последнии две строчки:

#Bundle-ClassPath: .,log4j.jar
#Include-Resource:log4j.jar
и не деплоить log4j.bar - плагин не запустится, потому что для библиотеки log4j импорты зависимостей не прописываются сами.

файл должен быть тут или там:
http://rapidshare.com/files/307866528/OSGI_Demo.rar.html
http://depositfiles.com/files/8zxl1imjn
 http://www.2shared.com/file/9207163/a0fe7f4d/OSGI_Demo.html




Комментариев нет:

Отправить комментарий