【问题标题】:Use Maven to build OSGi application使用 Maven 构建 OSGi 应用程序
【发布时间】:2013-03-21 16:27:16
【问题描述】:

我想构建一个符合 OSGi 的多模块应用程序,其中编译后我在 3 个文件夹中拥有所有必需的包。我正在使用 ma​​ven-bundle-pluginma​​ven-scr-plugin 来创建捆绑包。

我想要的是在 osgi 容器 (Equinox) 中使用单个命令运行此应用程序,希望使用脚本。为此,我认为我必须创建一个 config.ini 文件,列出应用程序中的所有捆绑包。

有没有办法在 Maven 编译时生成它?或者有没有更好的方法来获取某个文件夹结构中的所有捆绑包,以便可以立即运行应用程序?

【问题讨论】:

标签: java maven osgi maven-bundle-plugin


【解决方案1】:

我写了一个 maven 插件,默认情况下会在 target 下创建一个 dist 文件夹,其中包含一个随时可用的 equinox 以及所有 maven 依赖项。 Equinox 使用 YAJSW 进行包装,因此您可以将生成的 Equinox 包用作测试服务器。请查看插件使用页面:http://www.everit.org/eosgi-maven-plugin/

文档有点差,所以如果您有任何问题,请不要犹豫。

一个简短的分步指南:

  • 查看https://github.com/everit-org/osgi-samples-simple(用户:guest,密码:guest)
  • 运行“mvn install”。这将在模块 tests/core 的 target/eosgi-itests-dist/equinox 处生成一个测试春分环境。
  • 如果您想要一个没有测试模块的简单 Equinox 服务器,您可以在测试/核心模块上运行命令“mvn eosgi:dist”。

编辑

即将推出一本新的食谱,其中包含更详细的分步指南。网址是http://cookbook.everit.org

【讨论】:

    【解决方案2】:

    您可以在您的 OSGi Maven 项目中使用 maven-pax-plugin 和 PaxRunner。详情请查看tutorial

    <plugin>  
     <!-- Pax Runner Maven plugin -->  
     <groupId>org.ops4j</groupId>  
     <artifactId>maven-pax-plugin</artifactId>  
     <version>1.4</version>  
     <configuration>  
           <!-- Pax Runner version -->  
           <runner>1.4.0</runner>  
           <!-- OSGi framework type (equinox, felix, knopflerfish) -->  
           <framework>equinox</framework>  
           <provision>  
                 <param>--log=debug</param>  
                 <param>--workingDirectory=target/runner</param>  
                 <!-- bundles that should be installed -->  
                 <param>mvn:org.osgi/org.osgi.compendium/4.1.0@2</param>  
                 <param>mvn:org.apache.felix/org.apache.felix.eventadmin/1.2.2@3</param>  
                 <param>mvn:org.apache.felix/org.apache.felix.log/1.0.0@3</param>  
           </provision>  
     </configuration>  
    </plugin>  
    

    【讨论】:

    • 是否可以有多种配置,即一种用于felix,一种用于Equinox?我尝试通过 maven 属性设置框架,但是 felix 和 equinox 具有不同的依赖关系(例如,对于声明式服务)。
    【解决方案3】:

    看看 Tycho 及其不同的封装类型(例如 eclipse-application)。

    http://www.eclipse.org/tycho/

    http://wiki.eclipse.org/Tycho/Packaging_Types

    它用于许多商业和开源应用程序。

    【讨论】:

      猜你喜欢
      • 2017-05-09
      • 2013-08-13
      • 2012-03-08
      • 1970-01-01
      • 2015-07-16
      • 2011-02-25
      • 1970-01-01
      • 2012-05-08
      • 1970-01-01
      相关资源
      最近更新 更多