如何通过运行Apache Felix从Maven Artifact中更新捆绑包



当前我有一个情况,在这里开发一个项目,然后运行mvn install,然后将其放入我的本地Maven存储库中,作为简单的JAR文件

然后,我还有其他一些人"环境"制作的,其中包括很多捆绑包和东西,最终通过mvn pax:run运行,运行大约5分钟

我希望能够仅运行felix:update <bundle-name>,但是我无法填补本地Maven Repo中的Maven Jar伪像之间的差距,而我可以将其放置在某个地方可以运行felix:update或其他任何东西,也许uninstall/install

当我尝试通过项目运行mvn pax:create-bundle时,它会引发Containing project does not have packaging type 'pom'异常

任何帮助得到高度赞赏

更新:我注意到重新安装的捆绑包的问题以其激活量开始,并使用ClassNotFoundException(尽管提到的类都在捆绑包中存在并且始终存在,因此必须与ClassPath,ClassPath,ClassLoader设置或其他任何问题(

at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation BundleWiringImpl.java:1574 at org.apache.felix.framework.BundleWiringImpl.access$400 BundleWiringImpl.java:79 at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass BundleWiringImpl.java:2018 at java.lang.ClassLoader.loadClass ClassLoader.java:357 at some.external.adapters.package.guice.SomeModule.configure SomeModule.java:46 at com.google.inject.AbstractModule.configure AbstractModule.java:59

如果您有新构建捆绑包的文件的途径,则可以从Gogo Shell中进行更新,如下所示:

felix:update <bundleid> file:/path/to/file
refresh

其中 <bundleid>是要更新的捆绑包的数字ID。如果任何捆绑包取决于或从您更新的捆绑包中导入软件包,则需要refresh命令;此命令将导致框架尝试使用新的依赖项重新解决它们。

我很高兴接受 @neil-bartlett的答案,尽管我必须添加更多上下文:

1(我最初遇到的最大问题之一是,本地Maven Repo中的罐子文件与OSGI捆绑包不同。为了创建捆绑包,我必须在mvn install之后运行mvn bundle:bundle。捆绑包在target/文件夹中创建。

2(之后,在gogo shell中,我确实可以运行felix:update <bundle-id> file:C:/Users/blablabla/bundle-SNAPSHOT-2.0.jar,由于某些原因,如今,它 。在原始帖子更新中提到的例外确实正在发生,但是它们不能阻止正确安装更新的捆绑包。

相关内容

  • 没有找到相关文章

最新更新