Я относительно новичок в мире OSGi и нуждаюсь в помощи, чтобы понять, как автоматизировать процесс сборки. Я познакомился с использованием bndtool в Eclipse, и я узнал, как разрешать зависимости, запускать, тестировать, отлаживать и генерировать автономную банку. Я также ознакомился с основным и учебным пособием Maven, размещенным на официальном сайте OSGi. Моя проблема заключается в том, как автоматизировать мои сборки! Итак, допустим, у меня есть код в SVN. Мне нужно иметь возможность проверить код, а затем запустить скрипт/инструмент сборки для создания моих пакетов, которые затем я могу развернуть с Felix или Karaf. Официальный учебник по Maven (с OSGi enRoute) показывает только, как создать отдельную банку, которая не является тем, что меня интересует; Мне нужно создать пакеты. Я читал о плагине Maven Bundle, но я думаю, что при использовании этого я потеряю всю роскошь, предлагаемую bndtools на основе пользовательского интерфейса, с Eclipse. Большое спасибо за помощь!Как автоматизировать сборки bndtools
ответ
Если вы используете сборку maven с bndtools, тогда вы действительно потеряете некоторые преимущества. У меня есть пример полного проекта с использованием сборки maven. См. osgi-chat. Он использует bnd-maven-plugin для сборки пакетов, но вы также можете использовать maven-bundle-plugin. В обоих случаях вы используете стандартную поддержку m2e в eclipse. Bndtools тогда участвует только в разрешении пучков и создании runnable jar.
Мы используем чистый подход maven во многих проектах сообщества Apache. Это проверенный способ развертывания на apache karaf. Если вы хотите развернуть в karaf, тогда bndtools не поможет, поскольку он не может создавать функции karaf.
Если вы хотите всю поддержку IDE для bndtools, то используйте встроенную сборку bndtools с рабочей областью bndtools (cnf dir) и используйте созданную в ней конструкцию gradle.
Bndtools поставляется с плагином градиента, вы можете использовать его для экспорта исполняемого банку, но если вы просто запустите сборку, банки будут доступны в сгенерированной папке каждого проекта.
Вы можете использовать задачу runbundles экспортировать пакеты на основе файла .bndrun (это работает аналогично генерации исполняемого баночку, но только создает папку, содержащую пакеты)
Будучи пользователем давнего Maven, а также потому, что я Я планирую использовать karaf (jboss fuse). Я последовал рекомендациям Кристиана и потратил некоторое время на изучение плагина maven-bundle и планировал изучить bnd-maven-plugin. Из первых чтений о bnd-maven-plugin я обнаружил, что он имеет некоторые преимущества перед плагином apache (получает инструкции непосредственно от bnd, а не от pom; более быстрые обновления ожидаются параллельно с обновлениями bnd). Одна вещь, которую мне еще нужно понять об этом плагине: какая версия выпуска OSGi для этого генерирует пакеты? Я знаю, что maven-bundle-plugin генерирует только для R4, согласно официальному сайту, что является ограничением. Как насчет bnd-maven-plugin? Еще один вопрос: какие плагины доступны для создания karaf kars и могут ли они быть объединены с bnd-bundle-plugin? Большое спасибо за ваше терпение!
Я потратил некоторое время на изучение bnd-maven-plugin. Это лучший способ, который я мог бы найти для микширования Eclipse, bnd-maven-plugin и bndtools: 1. Используйте bndtools, чтобы разрешить требования и запустить пакеты внутри фреймворка из Eclipse. 2. используйте bnd-maven-plugin для построения пакетов 3. используйте плагин 'indexer' для создания индексного файла, который будет использоваться для разрешений зависимостей с помощью bndtools. Хотя этот метод позволяет запускать пакеты из Eclipse, каждый раз требуется «mvn install», потому что плагин bndtools не знает, как разрешать зависимости из рабочего пространства Eclipse. Этот метод также не позволяет отлаживать код в Eclipse. Есть ли лучшая альтернатива?
С благодарностью