10

我想构建一个兼容 OSGi 的多模块应用程序,编译后我在 3 个文件夹中拥有所有必需的包。我正在使用maven-bundle-pluginmaven-scr-plugin创建捆绑包。

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

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

4

3 回答 3

11

您可以在 OSGi Maven 项目中将 maven-pax-plugin 与PaxRunner一起使用。查看本教程了解详细信息。

<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>  
于 2013-04-02T06:12:48.657 回答
4

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

文档有点差,所以如果您有任何问题,请随时提问。

一个简短的分步指南:

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

编辑

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

于 2013-04-01T19:13:16.353 回答
4

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

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

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

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

于 2013-04-02T07:22:12.607 回答