это такая 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="."
Пример 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
Комментариев нет:
Отправить комментарий