Ответ 1
Ключом, чтобы сделать механизм обновления работы karaf, является развертывание из maven вместо использования папки развертывания. Установите пакет следующим образом:
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 repo на изменения в пакетах SNAPSHOT, которые он развернул, и автоматически перераспределить их.
Это также очень хорошо работает вместе с удаленной отладкой. использование
export KARAF_DEBUG=true
перед запуском карафа. Затем он будет прослушивать отладчик на порту 5005.
Затем вы можете запустить сеанс удаленного отладки eclipse на том же порту и хорошо отладить ваше приложение в karaf. Это работает очень хорошо, даже если вы измените свой пакет, используя один из подходов выше. Таким образом, вы можете отлаживать, находить свою проблему, изменять код, создавать и продолжать отладку с измененной версией.
Я также часто использую это, когда я работаю в самой базе кода karaf, так как это также работает для большинства собственных пакетов karaf.