Java 使用Felix&;创建完整的OSGi应用程序;专家

Java 使用Felix&;创建完整的OSGi应用程序;专家,java,maven,osgi,apache-felix,Java,Maven,Osgi,Apache Felix,我有一套使用Maven构建的OSGi捆绑包,我想知道是否有一个Maven插件可以让我执行以下操作: 指定要包含在分发中的捆绑包集和/或指定单个捆绑包并解决依赖关系 构建完整的框架分布。我的意思是一个包含所有需要的包的zip文件,加上felix的正确目录结构,这样用户就可以简单地解压缩文件并键入“java-jar bin/felix.jar” 我在谷歌上搜索了一下,除了appassembler,我没有发现任何有前途的东西。你们有谁想出过好的解决办法吗 更新 这是我试图完成的一个例子 example

我有一套使用Maven构建的OSGi捆绑包,我想知道是否有一个Maven插件可以让我执行以下操作:

  • 指定要包含在分发中的捆绑包集和/或指定单个捆绑包并解决依赖关系
  • 构建完整的框架分布。我的意思是一个包含所有需要的包的zip文件,加上felix的正确目录结构,这样用户就可以简单地解压缩文件并键入“java-jar bin/felix.jar”
  • 我在谷歌上搜索了一下,除了appassembler,我没有发现任何有前途的东西。你们有谁想出过好的解决办法吗

    更新 这是我试图完成的一个例子

    example-parent\
                   bundle-one
                   bundle-two
                   bundle-three
                   assembly-one
                   assembly-two
    
    其中,
    组件一
    将包括
    包一
    包二
    组件二
    将包括
    包二
    包三
    或其任何组合。然后,当您构建项目时,您将获得两个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建议使用汇编插件打包一个可以压缩的独立发行版,这是一个很好的建议。如果您正在寻找构建文件如何工作的示例,ApacheAries博客示例源代码将使用maven捆绑包和汇编插件

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

    在EnterpriseOSGiinAction()的第4章中,我们有更多关于这方面的内容,或者一个快速的google for eba、VirgoPlan或karaf功能应该可以找到更多。您的用例的缺点是需要将应用程序部署到运行时中,并预先安装适当的技术,因为没有一个是核心OSGi


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

    Sling Launchpad插件[1]创建了一个可运行的jar文件或war文件,其中嵌入了OSGi框架和一个可定制的捆绑包列表,这可能正是您所需要的。这样,您甚至不必解压缩生成的jar文件,只需启动它就足够了


    [1]

    如果您使用OSGi v4+并使用Maven构建,请使用。它使用起来非常方便,使OSGi开发变得轻而易举。

    除了说“使用pax-ops4j”之外,你能解释一下如何打包整个OSGi应用程序吗?