Как автоматизировать сборку bndtools

Я относительно новичок в мире OSGi и нуждаюсь в помощи, чтобы понять, как автоматизировать процесс сборки. Я познакомился с использованием bndtool в Eclipse и научился разрешать зависимости, запускать, тестировать, отлаживать и создавать автономный jar-файл. Я также ознакомился с базовым руководством и руководством по Maven, размещенным на официальном сайте OSGi. Моя проблема в том, как автоматизировать мои сборки! Итак, допустим, у меня есть код в SVN. Мне нужно иметь возможность проверить код, а затем запустить скрипт/инструмент сборки для создания моих пакетов, которые затем я могу развернуть с помощью Felix или Karaf. Официальный учебник на основе Maven (с OSGi enRoute) показывает только, как создать автономный jar-файл, который меня не интересует; Мне нужно создать пакеты. Я читал о плагине Maven Bundle, но думаю, что при его использовании я потеряю всю роскошь, которую предлагают bndtools на основе пользовательского интерфейса с Eclipse. Большое спасибо за помощь!


person medalik    schedule 10.11.2016    source источник


Ответы (4)


Если вы используете сборку maven с bndtools, вы действительно теряете некоторые преимущества. У меня есть пример для полного проекта, использующего сборку maven. См. osgi-chat. Он использует bnd-maven-plugin для сборки пакетов, но вы также можете использовать maven-bundle-plugin. В обоих случаях вы используете стандартную поддержку m2e в eclipse. Затем Bndtools участвует только в разрешении пакетов и создании исполняемого jar-файла.

Мы используем чистый подход maven во многих проектах в сообществе Apache. Это проверенный способ развертывания на apache karaf. Если вы хотите выполнить развертывание на karaf, то bndtools не сильно поможет, так как он не может создавать функции karaf.

Если вам нужна вся поддержка bndtools в IDE, используйте собственную сборку bndtools с рабочей областью bndtools (cnf dir) и используйте сборку gradle, которую она предоставляет.

person Christian Schneider    schedule 10.11.2016

Bndtools поставляется с плагином Gradle, вы можете использовать его для экспорта исполняемого jar-файла, но если вы просто запустите сборку, jar-файлы будут доступны в сгенерированной папке каждого проекта.

Вы можете использовать задачу runbundles для экспорта пакетов на основе файла .bndrun (это работает аналогично созданию исполняемого файла jar, но просто создает папку, содержащую пакеты)

person Bram Pouwelse    schedule 10.11.2016

Будучи давним пользователем maven, а также потому, что я планирую использовать karaf (предохранитель jboss), я последовал предложениям Кристиана и потратил некоторое время на изучение плагина maven-bundle-plugin и планирую изучить bnd-maven-plugin. Из первых чтений о bnd-maven-plugin я обнаружил, что он имеет некоторые преимущества по сравнению с плагином apache (получает инструкции непосредственно от bnd, а не от pom; более быстрые обновления ожидаются параллельно с обновлениями bnd). Одна вещь, которую мне все еще нужно понять об этом плагине: для какой версии выпуска OSGi он генерирует пакеты? Я знаю, что плагин maven-bundle-plugin генерируется только для R4, согласно официальному сайту, что является ограничением. А как насчет bnd-maven-plugin? Еще вопрос: какие есть плагины для генерации karaf kars и можно ли их комбинировать с bnd-bundle-plugin? Большое спасибо за ваше терпение!

person medalik    schedule 12.11.2016

Я потратил некоторое время на изучение bnd-maven-plugin. Это лучший способ, который я смог найти для смешивания Eclipse, bnd-maven-plugin и bndtools: 1. использовать bndtools для решения требований и запуска пакетов внутри фреймворка из Eclipse. 2. использовать bnd-maven-plugin для создания пакетов 3. использовать плагин 'indexer' для создания индексного файла, который будет использоваться для разрешения зависимостей с помощью bndtools. Несмотря на то, что этот метод позволяет запускать пакеты из Eclipse, каждый раз требуется «установка mvn», поскольку подключаемый модуль bndtools не знает, как разрешать зависимости из рабочей области Eclipse. Этот метод также делает невозможным отладку кода в Eclipse. Есть ли лучшая альтернатива?

Спасибо

person medalik    schedule 14.11.2016