Самый простой способ создать плагин Karaf

У меня есть предыдущий опыт программирования на Java, но я не очень хорошо разбираюсь во всей разнообразной экосистеме Java. Теперь мне поручили разработать небольшой плагин Karaf для огромной системы. В этой системе используется бесчисленное множество возможностей Java: Camel, Karaf, Maven и так далее. У меня есть пример кода, в который мне нужно внести небольшие изменения и перестроить.

Примером является проект Maven (по крайней мере, есть pom.xml), и в конце концов это должен быть плагин Karaf. Как проще всего внести изменения в пример и пересобрать плагин? Я никогда раньше не использовал ничего из вышеперечисленного, и изменения небольшие, поэтому установка и настройка множества вещей кажутся излишними.

Когда начать? :)


person Machman    schedule 31.07.2013    source источник


Ответы (2)


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

Базовый пакет OSGI (то, что вы называете «плагином») — это не что иное, как файл JAR со специальным текстовым файлом, файлом MANIFEST.MF.

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

Это пример файла манифеста, взятого из статьи OSGI википедии:

Bundle-Name: Hello World
Bundle-SymbolicName: org.wikipedia.helloworld
Bundle-Description: A Hello World bundle
Bundle-ManifestVersion: 2
Bundle-Version: 1.0.0
Bundle-Activator: org.wikipedia.Activator
Export-Package: org.wikipedia.helloworld;version="1.0.0"
Import-Package: org.osgi.framework;version="1.3.0"

Файл MANIFEST.MF обычно находится в папке META-INF/MANIFEST.MF вашего jar-файла, поэтому:

  • Вы можете написать этот файл вручную и вручную добавить его в сгенерированную банку.
  • Вероятно, из последних трех элементов примера манифеста вам понадобится только раздел Import-Package (без Bundle-Activator и без Export-Package).
  • Вы должны объявить в Import-Package каждом требуемом внешнем импорте пакета для вашего приложения и его версии. Имейте в виду, что внешние зависимости, которые вы используете в своем приложении, должны быть доступны в среде выполнения OSGI для запуска вашего пакета.
person el.atomo    schedule 07.08.2013
comment
Спасибо за отличный ответ! Я пришел к выводу, что это был основной JAR. Когда-нибудь в будущем я посмотрю на Maven, но пока этого достаточно (небольшое изменение). - person Machman; 08.08.2013

Maven уже предоставляет подключаемый модуль для karaf, единственное, что вам нужно сделать, это прикрепить его.

Для получения дополнительной справки вы можете увидеть ссылку ниже.

http://karaf.apache.org/manual/latest/developers-guide/karaf-maven-plugin.html

Спасибо

person saurav    schedule 31.07.2013
comment
Как я уже упоминал, я никогда не использовал Maven или Karaf, в основном делал .NET и Интернет. Эта страница ни о чем мне не говорит, довольно крутая кривая обучения. Отсюда и с чего начать в первом посте. Скорее всего, это одноразовое и незначительное изменение, поэтому быстрое и грязное решение будет более чем хорошим. - person Machman; 01.08.2013
comment
В качестве предложения сначала получите некоторые основы maven отсюда - maven.apache.org/what- is-maven.html, и тогда я думаю, что приведенный выше URL будет иметь гораздо больше смысла. - Спасибо - person saurav; 01.08.2013
comment
Сначала начните изучать простую Java, затем перейдите на maven, а после того, как вы освоитесь с основами, перейдите на OSGi и научитесь создавать модульные приложения. - person Achim Nierbeck; 02.08.2013
comment
Обычная Java, о которой я немного знаю. Но это небольшой плагин, и поэтому я хотел сделать его как можно быстрее. Я знаю, что это неправильный способ сделать это, но можно ли развернуть любую банку в Karaf? Проект Eclipse -> Экспортировать как jar -> скопировать в папку развертывания Karaf. Каков абсолютный минимум, чтобы заставить его работать? - person Machman; 02.08.2013