Должен ли я использовать подключаемые модули Eclipse (или OSGi Bundles) в качестве простого инструмента управления зависимостями?

2

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

В прошлом я придерживался создания подключаемых проектов вместо простых Java-проектов, даже если я никогда не собираюсь запускать эти проекты в виде пакетов osgi. Я просто считаю, что зависимости легче управлять в подключаемых проектах. Другие люди придерживаются того же пути? Что-нибудь против этого подхода?

Теги:
osgi
dependency-management
maven-2

6 ответов

2
Лучший ответ

Если вы прочитали реструктуризацию документа org.aspectj, этот проект сделал именно это:

  • Все зависимости будут выражаться в файлах манифеста пакета OSGi, которые определяют путь к классам (для баннеров библиотеки) и "требуемые" пакеты.
    Библиотеки, ожидаемые или ожидаемые в среде развертывания (например, XML или JRocket), должны быть включены для целей сборки и тестирования, но исключены из продукта доставки. Они могут быть указаны как "необязательные" обязательные пакеты или как требуемые пакеты

  • Начальная бинарная сборка будет работать через обычную сборку пакетов, причем выход пакета, включая двоичные файлы из фрагментов пакета, которые он требует (но не из дополнительных пакетов)

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

2

Я согласен с тем, что в Eclipse легче управлять зависимостями проектов с помощью OSGi, чем традиционным способом добавления ссылок на проекты или библиотеки.

Однако, если вы продвигаете OSGi-образ управления зависимостями во время разработки, разработчикам необходимо будет изучить OSGi, и они будут стоить по мере того, как будут возникать проблемы с видимостью класса.

Используете ли вы Require-Bundle или Import-Package для управления зависимостями? Несмотря на то, что Require-Bundle не является рекомендуемым выбором с OSGi, он может лучше подходить к точке зрения управления зависимостями времени разработки.

Если вы используете что-то вроде плагина Maven, Eclipse имеет раздражающее разделение совершенно разных методов компиляции/запуска внутри Eclipse и снаружи - с болью в поддержке двух параллельных систем компиляции/запуска.

1

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

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

Объедините два, и вы получите лучшее из обоих миров. OSGi можно заставить работать вместе с Maven, используя дополнительные библиотеки, такие как Bnd и m2eclipse.

0

Здесь два отдельных вопроса.

  • Как настроить несколько проектов и
  • Какая система сборки позволяет мне создавать несколько проектов.

Эти два не обязательно должны быть связаны. Так, например, вы можете выбрать Maven для создания проектов, но использовать проекты плагинов для облегчения редактирования. Большинство вещей избили систему сборки Eclipse; как только он становится работоспособным, он довольно стабилен - но получение от ничего к работе предполагает (а) удачу и/или (б) черную магию.

В конечном счете возникает вопрос, к которому вам легче управлять; оба типа зависимости, или только один. Если вам нужен один, тогда вам нужно потратить время либо на что-то вроде m2eclipse (который генерирует зависимости проекта от MOV MOV), либо с помощью pax-construct (который может генерировать манифест из maven maven). Либо это, либо жить с двумя системами управления зависимостями.

0

Я не буду использовать проекты подключаемых модулей лично, я бы использовал инструменты построения, такие как Ant, Maven и другие.

Если система сборки не интегрирована, это означает, что компания не очень разбирается в разработке программного обеспечения.

Я не беру на себя всю ответственность за внедрение системы сборки, возможно, вне часов. Если они не хотят мигрировать, я предлагаю вам начать поиск другого задания как можно скорее.

0

Это звучит как интересный подход, но лично я считаю, что лучше управлять зависимостями построения с помощью внешнего инструмента построения, такого как Ant или Maven, а не связывать вашу сборку с IDE. Если вы используете maven и плагин m2eclipse, он автоматически настраивает зависимости проекта Eclipse при загрузке Maven POM, если эти другие проекты также находятся в вашей рабочей области.

К сожалению, если ваша команда в настоящее время использует ad-hoc-управление зависимостями, маловероятно, что они захотят приложить усилия, чтобы перейти на Maven. Опять же, может быть, им просто нужен лидер, чтобы приложить усилия.

  • 0
    OSGI - это стандарт с тремя основными реализациями - Eclipse Equinox, Apache Felix и Makewave Knoplerfish. OSGi поддерживается в нескольких IDE, а также может разрабатываться вне любой IDE. Это определенно не привязывает вас к IDE.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню