Mic*_*udy 18 osgi maven apache-karaf osgi-bundle karaf
我决定在OSGI和Karaf之上构建一个应用程序 - 我真的很喜欢这个东西.但是,我在本地开发机器上进行日常部署时遇到了一些困难.我的意思是..我做了一个改变,然后我想在我当地的Karaf实例上进行测试.它可能发生在每小时几次.
我现在这样做的方式是创建一个JAR包的maven构建,然后将其复制到Karaf的deploy目录中.我认为它根本不优雅.
我试图寻找一种方法(谷歌).我读到了Karaf的功能,但似乎尽管它是一个很好的机制来部署整个应用程序,但它并没有解决我的问题.据我所知,它不会检查我的SNAPSHOT jar的新版本是否出现在我当地的maven回购中,对吗?
Chr*_*der 31
使karaf工作的更新机制的关键是从maven部署而不是使用deploy文件夹.像这样安装你的包:
install -s mvn:groupid/artifactID/version
Run Code Online (Sandbox Code Playgroud)
要么
install -s mvn:groupid/artifactID/version/typeOfMavenArtifact
Run Code Online (Sandbox Code Playgroud)
第二个对于安装例如war/wab工件很有用.可以在此处找到完整的maven协议规范.
然后卡拉夫知道捆绑来自哪里.你也可以用它来检查la -u
.这使得karaf显示更新位置,现在应该是maven uri.你不会所有的karaf包都有这样的更新位置.
当您现在使用maven创建项目的新版本时,它将最终出现在您本地的maven存储库中.然后简单地运行
update <bundleid>
Run Code Online (Sandbox Code Playgroud)
这使得karaf检查更新位置(在您的情况下是本地maven仓库)并从那里重新加载捆绑.
您甚至可以通过使用来进一步自动化
dev:watch
Run Code Online (Sandbox Code Playgroud)
或者对于karaf 3+
bundle:watch
Run Code Online (Sandbox Code Playgroud)
这将使karaf检查您的maven repo,了解它已部署的SNAPSHOT捆绑包的变化并自动重新部署这些变化.
这也与远程调试一起很好地工作.使用
export KARAF_DEBUG=true
Run Code Online (Sandbox Code Playgroud)
在开始卡拉夫之前.然后它将在端口5005上侦听调试器.
然后,您可以在同一端口上启动远程调试eclipse会话,并在karaf中很好地调试您的应用程序.即使您使用上述方法之一更改捆绑包,这也可以很好地工作.因此,您可以调试,查找问题,更改代码,构建并使用更改的版本继续调试.
当我在karaf代码库本身工作时,我也经常使用它,因为这也适用于大多数karaf自己的捆绑包.
归档时间: |
|
查看次数: |
7274 次 |
最近记录: |