Эта область, на мой взгляд, в настоящее время имеет очень слабую поддержку. OSGI на самом деле ничего не определяет в развертывании или упаковке, так что это зависит от других сред (например, Eclipse), чтобы придумать свой собственный способ сделать это.
Если вы создаете приложение RCP (базовое Eclipse), то системы eclipse делают все это, вплоть до создания exe и т. Д. Однако сборки в основном выполняются в рабочей области Eclipse, безголовые сборки сложнее. Проект Tycho пытается сделать это более разумным путем объединения циклов сборки Maven и Eclipse, однако он по-прежнему сосредоточен на приложениях RCP, а не на общих OSGI.
Если вы не выполняете RCP, что также является моей ситуацией, то вам, вероятно, придется применить собственное решение, поскольку я не нашел никакого общего решения. Вот схема того, что мы делаем:
Мы определяем один проект POM, в котором перечислены все пакеты, содержащиеся в вашем приложении. Все, что делает этот проект, это перечисляет ссылки - давайте назовем его проектом «bundle-list».
Затем мы используем pax provision для запуска проекта в режиме разработки. Это достигается созданием pom «bundle-list» как родительского pom-пакета pax-проекта (обычно в папке «provision»). Затем, когда вы запускаете pax, он использует список пакетов из этого проекта для запуска OSGI. Чтобы это работало, ссылки на комплекты в проекте «комплект-список» должны быть помечены как «предоставленные».
Затем для создания дистрибутива у нас есть еще один проект. Этот проект также имеет проект 'bundle-list' в качестве родителя. Этот проект использует различные плагины для создания дистрибутива, в том числе загрузку jar-пакетов. В дистрибутив входят скрипты, запускающие OSGI, но они написаны от руки, здесь нет систем pax.
Это хорошо для нас, чтобы хранить список пакетов в одном месте, но есть еще много рукописных сценариев, и есть проблемы с разделением конфигурации между двумя системами - например, конфигурационные файлы, начальные уровни комплектов и т. д.