使Karaf的更新机制正常工作的关键在于使用Maven进行部署,而不是使用部署文件夹。
像这样安装您的Bundle:
install -s mvn:groupid/artifactID/version
或者
install -s mvn:groupid/artifactID/version/typeOfMavenArtifact
第二个对于安装war/wab工件非常有用。完整的Maven协议规范可以在这里找到。
然后Karaf就会知道bundle来自哪里。您还可以使用la -u
检查此内容。这使得karaf显示更新位置,现在应该是一个maven uri。您将看到所有karaf bundles都具有此类更新位置。
当您使用maven创建项目的新构建时,它将最终出现在本地maven存储库中。
然后只需运行
update <bundleid>
这将使karaf检查更新位置(在您的情况下是本地maven存储库),并从那里重新加载bundle。
您甚至可以使用更进一步的自动化来实现此操作。
dev:watch
或者适用于Karaf 3+
bundle:watch
这将使karaf检查您的maven存储库中已部署的SNAPSHOT bundle的更改,并自动重新部署这些bundle。
这与远程调试非常配合。使用
export KARAF_DEBUG=true
在开始karaf之前,它将会监听5005端口上的调试器。
然后您可以在同一端口上启动远程调试eclipse会话,并在karaf中轻松调试应用程序。即使使用上述方法之一更改了捆绑包,这也非常有效。因此,您可以调试、查找问题、更改代码、构建并继续使用已更改版本进行调试。
当我在karaf代码库本身工作时,我经常使用此功能,因为这对于大多数karaf自己的捆绑包也适用。