Работа с Maven, OSGi и Bndtools

Сегодня меня спросили, стоит ли использовать Maven в нашем текущем приложении OSGi. Мы использовали Bndtools и отлично, потому что это делает разработку максимально простой. Bndtools использует OBR для поддержки других пакетов и разрешения зависимостей даже во время работы приложения.

Поскольку Maven широко распространяется и пользуется такой популярностью, в основном все пытаются использовать его в средах OSGi. Для меня это два разных подхода. OSGi имеет собственное объявление зависимостей, MANIFEST.MF и Maven pom, где вы можете их объявить. Поэтому, если вы используете их оба, вы будете объявлять зависимости два раза. Конечно, вы можете использовать плагин Apache OSGi Maven, чтобы избежать этого, и Maven отвечает за создание MANIFEST.MF. НО Maven Repositories действительно не заботятся о пакетах. Так что может случиться, что вы ссылаетесь на банку с не связкой.

Конечно, есть преимущества с использованием Maven, но действительно ли хорошо сочетать его с OSGi или специально с Bndtools?

Может ли кто-нибудь предоставить преимущества или недостатки! Есть ли у кого-то практический опыт использования обоих?

Ответ 1

Я думаю, что если почти все, что вы делаете, сосредотачивается вокруг Maven, то плагин Apache Felix Maven (также основанный на BND, кстати) - это путь.

В противном случае, если вы хотите использовать Maven, но в менее центральной роли, Eclipse Tycho имеет большой смысл. Tycho - это набор плагинов Maven.

Используя Tycho, вы поставляете целевую платформу от Eclipse до Maven, а затем можете разрешать все пакеты, просматривая вашу MANIFEST и целевую платформу. Файлы pom.xml действительно просты для проектов Tycho, поскольку они не содержат ваших зависимостей.

Tycho, очевидно, очень ориентирован на Eclipse. Если вы не используете eclipse, я не думаю, что это имеет смысл, но иногда его легче включить в существующий проект.

В любом случае вы можете использовать плагин Apache Felix Maven для генерации метаданных OBR на этапе развертывания.

Ответ 2

Я думаю, что использование Maven с OSGi-проектами работает очень хорошо. Вы можете использовать Felix Maven BND plugin, чтобы сделать вашу жизнь намного проще. При этом maven может автоматически генерировать метаданные OBR в локальном (или удаленном) репозитории maven. Это позволяет обрабатывать ваш репозиторий maven как OBR. Это делает рабочий процесс для проектов OSGi таким же, как и другие проекты, и все очень легко и довольно легко использовать.

Мы используем его на работе, и Maven действительно упрощает работу. Например, мы используем Maven для создания файлов проекта Eclipse, запускаем автоматические сборки на сервере CI и создаем метаданные OBR.