gpt4 book ai didi

maven - 如何在 Karaf 上使用频繁的本地快照包部署?

转载 作者:行者123 更新时间:2023-12-03 13:25:47 26 4
gpt4 key购买 nike

我决定在 OSGI 和 Karaf 之上构建一个应用程序——我真的很喜欢这些东西。但是,我在本地开发机器上的日常部署有点挣扎。我的意思是.. 我做了一个改变,然后我想在我本地的 Karaf 实例上测试它。它可能每小时发生几次。

我现在这样做的方式是创建一个 JAR 包然后将其复制到 Karaf 的部署目录中的 maven 构建。我认为它一点也不优雅。

我试图找到解决方法(谷歌)。我阅读了有关 Karaf 的功能,但似乎尽管它是部署整个应用程序的一个很好的机制,但它并没有解决我的问题。据我了解,它不会检查我的 SNAPSHOT jar 的新版本是否出现在我的本地 maven repo 中,对吗?

最佳答案

让 karaf 的更新机制起作用的关键是从 maven 部署,而不是使用 deploy 文件夹。
像这样安装你的包:

install -s mvn:groupid/artifactID/version

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

第二个对于安装例如 war/wab Artifact 很有用。完整的maven协议(protocol)规范可以找到 here .

然后,Karaf 知道捆绑包是从哪里来的。您也可以使用 la -u 进行检查。 .这使得 karaf 显示现在应该是 maven uri 的更新位置。您不会认为所有 karaf 捆绑包都有这样的更新位置。

现在,当您使用 maven 创建项目的新构建时,它将最终出现在您的本地 maven 存储库中。
然后简单地运行
update <bundleid>

这使 karaf 检查更新位置(在您的情况下是本地 maven repo)并从那里重新加载包。

您甚至可以通过使用进一步自动化此操作
dev:watch

或 karaf 3+
bundle:watch

这将使 karaf 检查您的 maven repo 以了解它已部署的 SNAPSHOT 捆绑包的更改并自动重新部署这些。

这也与远程调试一起很好地工作。采用
export KARAF_DEBUG=true

在开始 karaf 之前。然后它将在端口 5005 上监听调试器。

然后,您可以在同一端口上启动远程调试 Eclipse session ,并在 karaf 中很好地调试您的应用程序。即使您使用上述方法之一更改捆绑包,这也非常有效。因此,您可以调试、发现问题、更改代码、构建并继续使用更改后的版本进行调试。

当我在 karaf 代码库本身工作时,我也经常使用它,因为它也适用于 karaf 自己的大多数包。

关于maven - 如何在 Karaf 上使用频繁的本地快照包部署?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24791950/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com