我想构建一个OSGi兼容的多模块应用程序,在编译后我在3个文件夹中有所有需要的包。我使用maven-bundle-plugin和maven-scr-plugin来创建包。
我想要的是用一个命令在osgi容器(Equinox)中运行这个应用程序,希望使用一个脚本。为此,我认为我必须创建一个config.ini文件,列出应用程序中的所有包。
是否有办法在Maven编译时生成这个?或者是否有更好的方法将所有bundle放在某个文件夹结构中,以便应用程序可以直接运行?
您可以在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>
看看Tycho和它不同的打包类型(例如eclipse-application)。
http://www.eclipse.org/tycho/http://wiki.eclipse.org/Tycho/Packaging_Types它被用于许多商业和开源应用程序
我写了一个maven插件,默认情况下在目标下创建一个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- tests-dist/equinox处生成一个测试春分环境。
- 如果你想要一个没有测试模块的简单的equinox服务器,你可以在tests/core模块上运行命令"mvn eosgi:dist"
编辑:
一本新的食谱将很快面世,其中包含了更详细的一步一步的指南。url为http://cookbook.everit.org