Статьи

Bundlor 1.0 RC1 — Управление OSGi Bundle Manifests


Для разработчиков, которые хотят управлять своими собственными манифестами пакета, но нуждаются в небольшой помощи для автоматизации деталей, например, указание версий пакетов для разных видов импорта,
инструмент
Bundlor теперь
доступен и полностью готов к работе . Bundlor, проект SpringSource, также может помочь разработчикам, которые хотят создавать манифесты на основе содержимого их проекта и зависимостей, указанных в их файлах сборки. Инструмент работает с библиотеками, которые не имеют необходимых метаданных OSGi, чтобы разрешить их использование в OSGi Service Platform. Bundlor автоматизирует обнаружение зависимостей и обнаружение директив OSGi-манифеста для JAR-файлов после их создания.

В течение некоторого времени Spring внутренне использует Bundlor для управления пакетами, опубликованными в репозитории SpringSource Enterprise Bundle. Bundlor принимает в качестве входных данных JAR и шаблон, состоящий из надмножества стандартных заголовков манифеста OSGi, а затем анализирует исходный код и файлы поддержки в JAR, применяет шаблон к результатам и генерирует совместимый с OSGi манифест. На этапе анализа Бандлор ищет ссылки на классы и имена классов в классах Java и некоторых известных типов файлов. Поскольку Bundlor сканирует любой Java-класс в артефакте, созданном базовой системой сборки, он может видеть изменения, сделанные пользовательскими процессами сборки (т. Е. Ткачество с AspectJ или jarjaring), пока изменения находятся в артефакте. Bundlor обнаруживает ссылки на типы Java в классе Java и добавляет к ним требования к манифестам.

Профили OSGi

Управление и преобразование множества пакетов в репозитории SpringSource Enterprise Bundle может стать затруднительным, если разработчикам необходимо запомнить, какие пакеты делегированы для загрузки (экспортированы из системного пакета), а какие — из других пакетов в системе. В большинстве случаев разработчики не хотят импортировать загрузочные делегированные пакеты в собственное приложение. Вместо этого лучше импортировать системные пакеты комплектов в версии 0 и определить пользовательский импорт для остальных комплектов. Отслеживание того, какие пакеты находятся в каждой из этих категорий, может быть трудным и вызывать проблемы. Определение записей шаблона для категорий в шаблоне манифеста может занять много времени и утомительно.

Bundlor может принимать профиль OSGi в качестве входных данных и автоматически добавлять записи шаблона для загрузочных делегированных пакетов и системных пакетов. Записи импорта игнорируют пакеты с делегированной загрузкой и устанавливают версию системных пакетов на version = «0». Эта функция доступна во всех внешних интерфейсах Bundlor, включая командную строку, ANT и Maven. Еще одной важной особенностью Bundlor является поддержка
спецификации Blueprint . Bundlor может находить файлы OSGi Blueprint Service, сканировать их на предмет имен классов и интерфейсов и добавлять пакеты для этих типов в манифест OSGi.

Профиль OSGi определяет пакеты, которые среда выполнения OSGI (например, Spring dm Server) экспортирует из системного пакета и пакетов, делегированных загрузчику загрузочного класса. Профили OSGI не являются актуальными файлами. Это два свойства, которые хорошо известны среде выполнения OSGi. Они есть:

  • Свойство org.osgi.framework.system.packages , которое определяет пакеты, экспортируемые из системного пакета.
  • Свойство org.osgi.framework.bootdelegation , которое определяет делегированные пакеты для загрузки.

Эти свойства становятся файлом, когда вы передаете эти свойства Bundlor.

Первым шагом в использовании профилей OSGI с Bundlor является создание файла, который содержит текстовое представление двух свойств (перечисленных выше), которые составляют профиль OSGI. Пользователи обычно начинают с профиля OSGI своей конкретной среды выполнения OSGI, а затем настраивают его в соответствии со своей средой разработки. Bundlor работает со многими различными средами исполнения OSGi, включая Spring dm и Equinox Eclipse. Ниже приведен фрагмент профиля OSGI для сервера dm. Показаны только несколько пакетов, но в примере показан формат для создания файла профиля OSGI:

org.osgi.framework.system.packages = \
javax.accessibility,\
javax.activation,\
javax.activation;version="1.1.0",\
javax.activity,\
javax.annotation,\
...

org.osgi.framework.bootdelegation = \
com_cenqua_clover,\
com.cenqua.*,\
com.yourkit.*,\
...

После создания файла профиля OSGI способ его передачи в Bundlor зависит от внешнего интерфейса, который используется для создания манифеста.

BundlorEclipse

Bundlor предоставляет интеграцию Eclipse (BundlorEclipse), которую можно использовать в любом проекте Eclipse Java, который имеет характер проекта SpringSource OSGi Bundle. Не требует использования Bundle Classpath Container. В Eclipse Bundlor использует анализ исходного кода на основе абстрактных синтаксических деревьев, созданных с помощью Eclipse JDT, для обработки исходных файлов Java. Это означает, что BundlorEclipse может генерировать файлы манифеста без существующего пути к классам проекта. Он также может генерировать файлы манифеста из некомпилируемого, частичного кода Java. Bundlor также поддерживает конфигурационные файлы Spring, файлы Hibernate и JPA. Все эти ресурсы могут быть обработаны в Eclipse. BundlorEclipse доступен с серверными инструментами Spring dm 1.1.3, которые лицензированы под Eclipse Public License 1.0.

Смотрите руководство пользователя Bundler
и
учебник по началу работы для получения дополнительных инструкций по использованию Bundler.