Эффективный способ построения дистрибутива OSGi с Maven
Прежде всего, я новичок в OSGi/Maven и изучаю, как мне эффективно работать с этими инструментами (на данный момент я планирую использовать Felix в качестве моей реализации OSGi)
Я хотел бы создать проект, основанный на множестве пакетов. Конечно, каждый раз, когда я делаю изменения в одном (или нескольких) моих пакетах, я не хочу повторно развертывать "вручную"
То, что я хотел бы сделать, это что-то вроде:
mvn buildMyOsgiDistrib
mvn runMyOsgiDistrib
Что вы мне предлагаете? Спасибо
2 ответа
Есть два варианта, которые могут доставить вас туда.
Вы также можете:
Используйте Apache Karaf и создайте собственный дистрибутив
Вы создаете файл компонента karaf в одном проекте и используете плагин karaf-maven-plugin для создания пользовательского дистрибутива karaf.
Посмотрите этот пример https://github.com/cschneider/decanter-docker/blob/master/decanter-server/pom.xml.
Используйте bndtools для сборки вашего приложения.
В этом случае вы создаете pom со своими зависимостями и используете bnd-indexer-plugin для создания из него индекса OBR.
Затем вы можете использовать файл bndrun в автономном режиме, чтобы определить свои зависимости верхнего уровня и позволить распознавателю разрешить их в соответствии с созданным вами репо.
Я создал плагин maven для автоматизации этапа разрешения и экспорта, который обычно выполняется в пользовательском интерфейсе bndtools. Этот плагин, вероятно, будет частью следующего выпуска bnd.
Смотрите пример osgi-chat.
Вариант Карафа более проверен, так как он существует уже дольше, но Караф не является простым Феликсом. Преимущество karaf состоит в том, что он имеет много функций для типичных больших проектов. Так что легче заставить это работать.
Вариант bndtools не так уж сложен, поскольку они только начали поддерживать maven. Вы также должны включить все зависимости самостоятельно в индекс для индекса. Положительным моментом является то, что он создает очень маленький развертываемый объект, а распознаватель очень помогает вам правильно настроить зависимости.
Спасибо большое Кристиан за этот подробный ответ
Поскольку я разместил свой вопрос, я нашел следующую документацию Готовить с Maven и OSGi, основанную на плагине Maven Pax
Это дает преимущество для работы с любой реализацией OSGi (не только с Karaf). На данный момент я изучаю, что это за вариант...
Еще раз большое спасибо