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

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

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

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

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

2 ответа

Решение

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

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

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

Тихо, очевидно, очень ориентирован на "Затмение". Если вы не используете Eclipse, я не думаю, что это имеет большой смысл, но иногда его легче включить в существующий проект.

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

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

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

Для тех, кто придет к этому вопросу сейчас, прошло много времени с тех пор, как он был задан изначально. Работа Maven, о которой Нил Бартлетт упомянул выше, уже созрела, и теперь между Bnd / Bndtools и Maven довольно хорошая интеграция, включая разъем m2e для Eclipse / Bndtools.

Нил в соавторстве с Тимом Уордом выступил со слайд-шоу на эту тему:

https://www.slideshare.net/mfrancis/bndtools-and-maven-a-brave-new-world-n-bartlett-t-ward

Другие вопросы по тегам