我有一个很大的OSGI包,我想把它打包并作为一个单独的jar文件发布。我正试图找出将多个罐子包装成一个大罐子的最佳方法。
到目前为止,我所看到的最好的选择似乎是一个jar项目。然而,我们正在使用的框架从'plugins'目录中拉入jar文件,one-jar似乎希望/要求所有jar文件只存储在lib目录中。可能有一个简单的方法来解决这个问题,我还没有完全了解架构,因为我还在试图决定哪种方法是最好的。对于将多个OSGI包打包到一个jar中的其他方法和/或如何使其在一个jar中工作的任何建议都非常感谢。
谢谢
另一种解决方案是使用PojoSR来运行bundle,而不是在OSGi框架中运行它们。PojoSR简单地实现了OSGi的服务层,没有模块层。这样做的一个副作用是,您可以轻松地将应用程序打包为可执行的JAR文件。当您运行这个JAR时,它也不需要在磁盘上创建一个包缓存。
有关PojoSR的更多信息,请访问:- http://code.google.com/p/pojosr/
- http://luminis-technologies.com/?p=358
- http://www.infoq.com/news/2011/10/pojosr
使用Apache Felix Maven Bundle Plugin,我相信该选项可以实现您正在寻找的功能。http://felix.apache.org/site/apache-felix-maven-bundle-plugin-bnd.html
Apache Sling的maven-launchpad-plugin从bundle列表中生成一个可运行的jar(可选的war文件和Karaf描述符),参见http://sling.apache.org/site/maven-launchpad-plugin.html
Sling安装程序可用于从文件系统或其他来源加载额外的包,参见http://sling.apache.org/site/jcr-installer-jcrjcrinstall-and-osgiinstaller.html