Караф-сборка и особенности: новый и старый метод?
Я пытаюсь создать настольное приложение Java Maven OSGI, которое можно запустить с помощью Karaf. В проект входит несколько пакетов. Я считаю, что мне нужно создавать элементы и собирать их?
Из документации Карафа кажется, что есть новый и «старый» способ.https://svn.apache.org/repos/asf/karaf/site/production/manual/latest/custom-distribution.html Я все еще не понимаю следующее:
В дополнение к моим проектам родительского / дочернего пакета, должны ли существовать проекты функций и сборки с их собственными pom.xml? Я не уверен в общей структуре и нашел различные примеры карафов.
Должен ли файл features.xml создаваться автоматически (плагином) или создаваться вручную?
В случае, если должен быть проект Features, если в нем есть
<packaging>features</packaging>
или<packaging>pom</packaging>
Для моей цели нужен ли чертеж карафа / верблюда?
Спасибо
1 ответ
- В дополнение к моим родительским/дочерним проектам должны быть проекты Feature и Assembly со своими собственными pom.xml(s)? Я не уверен в общей структуре и нашел различные примеры карафа.
В большинстве примеров люди обычно используют подобную структуру для osgi-приложений (в основном это группа пакетов, которые работают вместе для предоставления услуги).
- Родительский проект
- Пакет(ы) API
- Пакет(ы) реализации
- Проект репозитория функций
Использование функций для собственных проектов не является обязательным, но обычно рекомендуется, поскольку установка отдельных пакетов вместе с их зависимостями становится все более утомительной, чем больше у вас пакетов. С помощью функций вы можете группировать пакеты, их зависимости (включая функции) и конфигурации по умолчанию, что значительно упрощает установку, удаление и обновление приложений OSGi.
- Должен ли файл functions.xml генерироваться автоматически (плагином) или создаваться вручную?
- В случае, если должен быть проект Features, должен ли он иметь
Что касается включения проекта сборки, зависит от предпочтений. Однако, основываясь на разделении задач, можно включить проект сборки в связанный родительский проект, если указанный экземпляр karaf запускает только одно приложение osgi, где, как если бы он работал несколько, вероятно, лучше держать его отдельно от приложений OSGi или включать его в некоторые проект, включая пакеты, содержащие общие инструменты, модели и службы, которые используются моими многочисленными приложениями OSGi, работающими внутри karaf.
Для создания functions.xml вы должны использовать официальный karaf-feature-archetype.
org.apache.karaf.archetypes/karaf-feature-archetype/<karaf-version>
который предоставляет вам предварительно настроенный проект, в котором вы можете просто начать добавлять определения функций. С его помощью вы можете создать файл functions.xml, используя, например,
mvn install
команда. Подробнее о доступных архетипах в документации .
Проекты, созданные с использованием официального архетипа
<packaging>features</packaging>
.
- Для моей цели есть ли необходимость в чертеже карафа/верблюде?
Зависит от того, нужны ли вам возможности интеграции Apache Camel для вашего приложения. Вы также можете использовать чертежи без верблюда или альтернативно использовать декларативные службы.
Насчет десктопных приложений не знаю насколько хорошо они поддерживаются в karaf. Наиболее распространенные варианты использования, которые я видел, связаны с запуском бэкэнд-вещей, таких как веб-сервисы, интеграции, запланированные задачи и т. д.