Подтвердить что ты не робот

Должен ли я сначала использовать POM или MANIFEST при разработке приложения OSGi с Maven?

Существует два основных подхода при разработке приложения OSGi с Maven: сначала POM-first и MANIFEST.

Я ищу ответ, который находится в форме таблицы, в которой показаны плюсы и минусы каждого метода.

Чтобы быть более конкретным, я также хотел бы знать, как это связано с:

  • Зрелость набора инструментов
  • Независимость поставщика.
  • Легкость разработки (в том числе поиск людей, которые могут заниматься разработкой инструментария)
  • Совместимость
  • Предотвращение ClassNotFound
  • Избегайте ручной работы.
4b9b3361

Ответ 1

В настоящее время это то, что я могу придумать

POM-First Pros (с использованием maven-bundle-plugin)

  • Использует существующие навыки, хранилища и инструменты Maven.
  • Скорее всего, легче найти людей, которые знают, как управлять pom.xml, а не MANIFEST.MF вместе с pom.xml
  • Большая часть информации в MANIFEST.MF может быть получена из самого pom.xml.
  • Может работать с другими IDE не только на основе Eclipse.
  • Менее инвазивный, просто добавьте плагин один и измените тип упаковки на "bundle"

POM-First Cons

  • ClassNotFoundException скорее всего произойдет во время выполнения. Однако это можно смягчить, используя pax-exam (хотя его очень сложно настроить).
  • По-прежнему необходимо понять, как настроен MANIFEST, чтобы убедиться, что элемент конфигурации instructions установлен правильно.

MANIFEST-first Pros (с использованием tycho-maven-plugin)

  • Кажется, это рекомендуемый подход или, по крайней мере, обсуждался как рекомендуемый подход, но я не могу понять, почему он имеет значительную выгоду. (Отсюда почему был задан этот вопрос).
  • Хорошо для разработки плагинов Eclipse и хорошо интегрируется с PDE
  • Предоставляет инструменты для тестирования, позволяя ClassNotFoundException появляться во время тестирования JUnit, а не времени выполнения.

MANIFEST-first Cons

  • Кажется, что он работает только на средах IDE на основе Eclipse. Вам не нужно использовать Eclipse, но без PDE вы бы хотели?
  • Нарушает принципы СУХОЙ, так как я должен делать это, сохраняйте имена и версии из POM и MANIFEST.MF в синхронизации.
  • Нужно назвать вещи определенным образом.
  • Вы не можете смешивать, что означает, что существующие многопроектные установки Maven не могут просто придерживаться поддержки OSGi.
  • Для получения меньших предупреждений требуется гораздо больше настроек по сравнению с maven-bundle-plugin: http://wiki.eclipse.org/Tycho/Reference_Card#Examplary_parent_POM
  • Необходимо сделать тестовые примеры отдельным проектом. Он не будет запускаться при построении в src/test/java.
  • Кажется, что он будет тестировать только те классы, которые выставляются, другими словами, те, которые находятся в ".internal". не тестируется.

Если бы меня попросили дать рекомендации для предприятия, которое уже использует Maven и хочет перейти в OSGi, тогда это будет POM first

Если бы меня попросили дать рекомендацию кому-то, кто занимается разработкой плагинов Eclipse, то он будет Манифест первым - с tycho

Ответ 2

Я думаю, вы должны выбрать по своему усмотрению. Для проектов OSGi на стороне сервера я предпочитаю первый стиль pom. Он хорошо соответствует строкам maven и гораздо менее подвержен ошибкам, чем Manifest. На самом деле bnd, который находится за плагином maven bundle, в большинстве случаев Manifest прав не имеет никакой дополнительной конфигурации. Хитрость заключается в использовании некоторых правил именования. Например, если вы называете внутренний пакет impl или внутренний, он не будет экспортироваться. Используя этот стиль, вы не можете использовать перспективу плагина Eclipse (по крайней мере, без bndtools, которые мне не нравятся), но я еще не пропустил эту перспективу. Я разработчик проектов Apache Karaf, CXF и Camel, где мы используем этот стиль, и он отлично работает. Специально для CXF и Camel замечательно, что мы можем поддерживать развертывание OSGi и OSGi с помощью одной и той же сборки и инструментов.

Для приложений RCP Eclipse Манифест сначала - это путь, который вам нужен, с точки зрения плагина и инструментов Eclipse IDE. Если вы хотите совместить это с maven, тогда tycho - это, вероятно, путь.

Ответ 3

MANIFEST сначала не блокирует вас в Eclipse (хотя я был бы удивлен, если бы больше, чем крошечное меньшинство, использовало бы что-нибудь еще). MANIFEST - это файл, который учитывается и должен быть добавлен в банку, независимо от того, как вы это делаете.

С другой стороны, POM сначала полностью блокирует вас до Maven, вы теряете преимущество в том, что пакет OSGi представляет собой обычную банку, которую вы можете сделать любым способом.

Я пробовал оба, я действительно предпочитаю МАНИФЕСТ сначала. Файл MANIFEST - действительно важный файл, я предпочитаю создавать этот файл для создания файла, который создает этот файл. Если произойдет что-то странное (и это будет в какой-то момент), файл MANIFEST первым проверяет, он просто проще, если это ваш собственный файл. Кроме того, вы все равно должны быть знакомы с ним.

Итак, если Maven - ваша альфа и омега, POM сначала подойдет вам лучше всего, но вам все равно нужно иметь глубокое понимание файла MANIFEST.