Работа с 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