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

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

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

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

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


person christian.vogel    schedule 12.05.2012    source источник
comment
Привет Кристиан. Спасибо за ваш вопрос и за использование Bndtools. Я знаю, что поддержки Maven все еще немного не хватает, но мы активно работаем над этим в данный момент. Были некоторые споры о том, как лучше всего это сделать. Конечно, мы хотим избежать двойного объявления зависимостей, поэтому POM будет мастером для сборок. В любом случае следите за обновлениями в списке рассылки, так как в начале июня у нас будет несколько объявлений. Пожалуйста, продолжайте оставлять свои отзывы и предложения. Спасибо!   -  person Neil Bartlett    schedule 13.05.2012
comment
Привет, Нил. Спасибо за ответ на мой вопрос. Я ждал, чтобы услышать что-нибудь от вас ;) Bndtools ооочень хорош, и, по моему мнению, нам не нужен Maven в сочетании с Bndtools. Инструмент создает все ваши jar-файлы и создает MANIFEST.MF, то же самое, что делает Maven, но мне не нужно указывать что-то в дополнительном файле pom. Вы абсолютно правы, говоря, что если мы используем оба, мы дважды объявим зависимости. Не могу дождаться вашего следующего релиза на Bndtools!!! Спасибо!   -  person christian.vogel    schedule 13.05.2012


Ответы (3)


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

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

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

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

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

person Frank Lee    schedule 13.05.2012

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

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

person Oleksi    schedule 12.05.2012
comment
Спасибо @Oleksi за ваш ответ. Не знал, что с Maven есть возможность генерировать метаданные OBR. Но так как мы используем Bndtools, все эти вещи также выполняются. Процесс создания пакетов со всей информацией, а также создание метаданных OBR. - person christian.vogel; 13.05.2012
comment
Я никогда не пользовался Bndtools, поэтому не знаю, на что он способен. Однако я знаю, что Maven очень хорошо служил нам в прошлом и имеет большую поддержку отрасли. - person Oleksi; 13.05.2012
comment
Какую версию maven вы используете? - person Aravind Yarram; 13.05.2012
comment
3, но какое-то время работал и со 2, и все работало нормально. - person Oleksi; 13.05.2012
comment
@Oleksi: Насколько сложно указать весь материал OSGi для MANIFEST.MF в вашем файле pom, поскольку это обычный XML? Потому что с Bndtools вы можете писать классы POJO со специальной аннотацией, а ваш MANIFEST.MF автоматически генерируется в процессе сборки, который просто принимает аннотации. НО я нашел интересную статью от Нила Бартлетта ссылка также включение поддержки Maven в Bntools. Было бы здорово, если бы Нил прочитал вопрос здесь и мог высказать свое мнение :) - person christian.vogel; 13.05.2012

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

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

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

person Fr Jeremy Krieg    schedule 19.02.2019