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

bab*_*thy 10 java osgi maven apache-felix

我有一组使用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
Run Code Online (Sandbox Code Playgroud)

其中assembly-one将包括bundle-onebundle-two并且assembly-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
Run Code Online (Sandbox Code Playgroud)

希望这可以提供更多关于我正在努力实现的信息.我想这有点类似于Eclipse做feature.xml的方式,但当然不使用Eclipse.

Ber*_*taz 6

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

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


Hol*_*ins 3

Fred 建议使用程序集插件来打包一个可以压缩的独立发行版,这是一个很好的建议。如果您正在寻找构建文件如何工作的示例,Apache Aries 博客示例源使用了 Maven 捆绑包和程序集插件。

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

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

另一个使部署更容易的项目是 Felix 文件安装。这允许您将捆绑包放入受监视的目录中,从而无需编写配置文件。