Java 将OSGI项目打包为单个jar?

Java 将OSGI项目打包为单个jar?,java,jar,osgi,package,Java,Jar,Osgi,Package,我有一个很大的OSGI包,我想把它打包并作为一个jar文件发布。我试图找出将多个罐子打包成一个大罐子的最佳方法 到目前为止,我看到的最好的选择似乎是一个jar项目。然而,我们使用的框架从一个“plugins”目录中拉入jar文件,一个jar似乎希望/要求所有jar文件只存储在lib目录中。也许有一个简单的方法可以解决这个问题,我还没有充分研究体系结构,因为我仍在努力确定哪种方法是最好的 对于将多个OSGI捆绑包打包到一个jar中的其他方法和/或如何使其在一个jar中工作的任何建议,我都非常感谢

我有一个很大的OSGI包,我想把它打包并作为一个jar文件发布。我试图找出将多个罐子打包成一个大罐子的最佳方法

到目前为止,我看到的最好的选择似乎是一个jar项目。然而,我们使用的框架从一个“plugins”目录中拉入jar文件,一个jar似乎希望/要求所有jar文件只存储在lib目录中。也许有一个简单的方法可以解决这个问题,我还没有充分研究体系结构,因为我仍在努力确定哪种方法是最好的

对于将多个OSGI捆绑包打包到一个jar中的其他方法和/或如何使其在一个jar中工作的任何建议,我都非常感谢


感谢使用ApacheFelixMaven Bundle插件,我相信这个选项可能会实现您想要的功能

apachesling的maven launchpad插件从bundle列表中生成一个可运行的jar(以及可选的war文件和Karaf描述符),请参见


Sling安装程序可用于从文件系统或其他源加载其他捆绑包,请参见

另一种解决方案是使用PojoSR运行捆绑包,而不是在OSGi框架中运行它们。简单地说,PojoSR实现了OSGi的服务层,而没有模块层。这样做的一个副作用是,您可以轻松地将应用程序打包为可执行的JAR文件。当您运行该JAR时,它也不需要在磁盘上创建捆绑缓存

有关PojoSR的更多信息,请访问:


感谢您的链接。但我忘了说我们所有的构建都使用ant。我将查看您提到的捆绑包,但我怀疑,由于我们目前没有使用Apache或maven,因此它将不可用。您可以使用ANT调用它。实际上,插件有一个ant目标,我认为它是为了让插件创建一个ant build.xml文件而设计的。我将尝试使用它,看看会发生什么。当您可以直接将BND用作Ant任务时,为什么要这样做呢?但是,我不确定BND是否能完成您想要的功能。我不清楚您是否想将整个应用程序(包括OSGi运行时)打包为一个可执行的jar文件;或者,您是否希望以某种方式将捆绑包合并到单个捆绑包中,以简化OSGi运行时的部署;或者,或者您试图将(非OSGi捆绑包)嵌入到单个OSGi捆绑包中?我希望将所有内容打包到单个jar中。他们应该能够通过键入java-jarapplication.jar来运行程序。无需安装单独的OSGI应用程序即可轻松使用。使用的框架已经从插件文件夹加载了OSGI包,而没有使用外部OSGI工具;所以这实际上就像管理一个jar文件一样简单,这个jar文件可以在它的插件文件夹中包含其他jar文件。