Как работать с частыми локальными развертываниями снимков на 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.