使用Felix和Maven创建完整的OSGi应用程序

我有一组使用Maven构建的OSGi包,我想知道是否有可用的Maven插件允许我执行以下操作:

  1. 指定要包含在分发中的捆绑包和/或指定单个捆绑包并解析依赖关系。
  2. 构建完整的框架分发。 我的意思是单个zip文件包含所需的所有包,以及felix的正确目录结构,以便用户只需解压缩文件并输入“java -jar bin / felix.jar”。

我做了一些谷歌搜索,除了appassembler我没有找到任何有希望的东西。 有没有人想出一个好的解决方案?

更新这里是我想要完成的一个例子。

example-parent\ bundle-one bundle-two bundle-three assembly-one assembly-two 

assembly-one将包括bundle-onebundle-twoassembly-two情况下,包括bundle-twobundle-three或其任何组合。 然后,当您构建项目时,您将获得两个zip文件,一个用于assembly-one一个用于assembly-two在自包含的felix安装中包含相应的包。 例如:

 assembly-one.zip\ bin\felix.jar bundle\bundle-one, bundle-two, plus bare min felix bundles conf\any configuration files I need 

希望这能提供有关我正在努力完成的更多信息。 我想这与Eclipse做feature.xml的方式类似,但当然不使用Eclipse。

Fred建议使用程序集插件打包一个可以压缩的自包含发行版,这是一个很好的建议。 如果您正在寻找一个如何构建这样的构建文件的示例,那么Apache Aries博客示例源将使用maven bundle和assembly插件。

另一种方法是创建应用程序工件。 目前还没有一个OSGi标准(但是),但是有几个项目提供了一种将捆绑包组合成超级捆绑包的方法。 这与您使用程序集描述的内容不太相似,因为OSGi框架不包含在内,但它与Eclipse feature.xmls类似。 查看Apache Aries eba(企业捆绑存档)应用程序,Virgo计划文件或Karaffunction。 在大多数这些捆绑中,您将获得一个存档,其中包含一些包和/或描述应用程序内容的元数据文件。 可以从存储库中配置未包含在存档中的分发包。 对于Aries,还有一个eba maven包装,它将生成包含APPLICATION.MF文件和包含的包的.eba存档。

我们在Enterprise OSGi in Action( http://www.manning.com/enterpriseosgiinaction )的第4章中对此有了更多了解,或者对于eba,Virgo计划或karaffunction的快速google应该会找到更多。 您的用例的缺点是需要将应用程序部署到运行时,并在其中预先安装适当的技术,因为没有一个是核心OSGi。

另一个要简化部署的项目是Felix文件安装。 这允许您将捆绑包拖放到受监视的目录中,从而节省了写入配置文件的麻烦。

Sling Launchpad Plugin [1]创建了一个可运行的jar文件或一个war文件,它嵌入了OSGi框架和一个可自定义的bundle列表,这可能就是你所需要的。 有了它你甚至不必解压缩生成的jar文件,只需启动就足够了。

[1] http://sling.apache.org/site/maven-launchpad-plugin.html

也许这可以帮助你想要完成的事情?

我不确定,但也许值得一试?

http://maven.apache.org/plugins/maven-assembly-plugin/

也许还有以下几点?:

http://felix.apache.org/site/apache-felix-maven-bundle-plugin-bnd.html

这将需要一些阅读/研究,但我认为它可能是有用的。 如果没有,那么也许我没有正确理解你的目标,我很抱歉。

如果您使用的是OSGi v4 +并使用Maven构建,请使用pax-ops4j 。 使用非常方便,使OSGi开发变得轻而易举。