Как работать с частыми локальными развертываниями снимков на Karaf?

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

Теперь я делаю сборку maven, которая создает JAR-пакет и затем копируется в каталог развертывания Karaf. Я думаю, что это совсем не элегантно.

Я пытался найти способ обойти (Google). Я читал о функциях Karaf, но кажется, что, несмотря на то, что это хороший механизм для развертывания всего приложения, он не решает мою проблему. Насколько я понимаю, он не проверяет, появилась ли новая версия моей банки SNAPSHOT в моем локальном репозитории Maven, верно?

1 ответ

Решение

Ключом к созданию механизма обновления karaf является развертывание из maven вместо использования папки deploy. Установите свой пакет, как это:

install -s mvn:groupid/artifactID/version

или же

install -s mvn:groupid/artifactID/version/typeOfMavenArtifact

Второй полезен для установки, например, артефактов war/wab. Полная спецификация протокола maven может быть найдена здесь.

Тогда Караф знает, откуда взялся сверток. Вы также можете проверить это, используя la -u, Это заставляет karaf показывать местоположение обновления, которое теперь должно быть maven uri. Вы не будете иметь, что у всех пакетов karaf есть местоположение обновления как это.

Теперь, когда вы создаете новую сборку вашего проекта с использованием maven, он окажется в вашем локальном хранилище maven. Тогда просто беги

update <bundleid>

Это заставит karaf проверить местоположение обновления (в вашем случае вы используете локальный репозиторий Maven) и перезагрузить пакет оттуда.

Вы можете еще больше автоматизировать это с помощью

dev:watch

или для карафа 3+

bundle:watch

Это заставит karaf проверить репозиторий Maven на наличие изменений в развернутых им пакетах SNAPSHOT и автоматически повторно развернуть их.

Это также очень хорошо работает вместе с удаленной отладкой. использование

export KARAF_DEBUG=true

перед запуском караф. Затем он будет прослушивать отладчик на порту 5005.

Затем вы можете запустить сеанс удаленной отладки затмения на том же порту и приятно отлаживать ваше приложение в karaf. Это работает очень хорошо, даже если вы меняете свой пакет, используя один из подходов выше. Таким образом, вы можете отладить, найти свою проблему, изменить код, собрать и продолжить отладку с измененной версией.

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

Другие вопросы по тегам