如何从jar库创建OSGi包?
答案 0 :(得分:25)
如果你正在使用eclipse:有一个向导。
它允许您选择一些jar库并创建一个包含这些jar的插件项目(即OSGi包)。
你可以在这里找到它:
File -> New -> Other ... -> Plug-in from Existing jar Archives.
答案 1 :(得分:9)
原则上,您只需要将OSGi元数据添加到清单
eclipse有一个bundle创建者,它提供了一种非常实用的方法来添加这些应该是Plugin Dev Toolkit的一部分。
这是一个article详细说明了该过程以及如何使用Bnd工具,maven等进行此操作。
我个人非常喜欢the pax tools。它是基于命令行的,但非常实用。要创建现有jar的OSGi包,可以使用bnd tool。
答案 2 :(得分:5)
首先查看您是否可以从存储库中找到启用osgi的库版本
如果找不到启用OSGi的版本。您可以继续使用pax工具 - PaxConstruct或使用aQute's Bnd tool。
答案 3 :(得分:3)
将JAR档案解压缩到项目中 取消选择 - >取消选择它,将导出JAR的所有包
如果将JAR存档解压缩到项目中 已选中,那么您将手动需要在 MANIFEST.MF中导出所需的包文件。
点击完成。您将在工作区中找到名为transport-5.1.1的项目。您也可以验证,JAR的所有包都在MANIFEST.MF文件中导出。
答案 4 :(得分:1)
Eclipse Bundle Recipe项目提供了一种基于Maven的方法,用于将OSGi元数据添加到从Maven存储库中使用的JAR中。
它的核心是bnd tool。这个工具就像一把瑞士军刀。它分析jar和类文件并正确计算包导入和导出。你应该使用bnd自己转换专有的罐子。它是available in Maven Central。
答案 5 :(得分:1)
迟到了派对:
如果您正在使用 Gradle ,则可以在应用osgi-run插件时将jar添加为项目的正常依赖项。
osgi-run插件会将jar透明地包装到一个包中,导出其中的每个包并计算其所有导入。由于Gradle将知道jar的传递依赖性,如果有必要,它也会对它们做同样的事情。
jar将成为OSGi运行时osgi-run创建的一部分,然后您可以使用gradle runOsgi
或gradle createOsgi
启动,然后执行run.sh
或{ {1}}脚本。
实际包装是由Bnd完成的,当然是OSGi世界的瑞士刀。
如果要配置包装的发生方式(通常应该导入/导出的内容),可以在Gradle构建文件中轻松完成,有关详细信息,请参阅documentation。
示例:
run.bat