我正在寻找使用 eclipse bndtools 插件将 jar 转换为 OSGi 包的分步指南。我知道可以使用命令行使用 bnd 执行此操作,但很高兴知道如何通过 IDE 执行相同操作。
我可能遗漏了一些东西,但本教程仅说明了如何从头开始创建项目。
按照文章从标准 jar 创建 Eclipse 插件(OSGi 包)来实现这一点。虽然这种方法不使用 Bnd,但你将能够实现你想要的。
简而言之,您可以执行以下操作:
通过选择创建一个新的插件项目File-> New -> Project...-> Plug-in Development -> "Plug-in from Existing JAR Archives"
选择你想在这个新插件(包)中拥有的罐子。输入其他插件数据(名称、版本、ID 等)。
取消选中标志Unzip the JAR archive into the project
。按然后完成。
取消选中复选框Unzip the JAR archive into the project
,防止从 Jar 中提取类文件,这通常是不必要的。
编辑:
导出您的捆绑包以将其安装到 OSGi 运行时。选择您的捆绑包并选择File -> Export -> Plug-in Development -> "Deployable plug-ins and fragment"
.
取消选中导出源的复选框。
-classpath: jar/htmlcleaner-2.2.jar, jar/htmlcleaner-2.2-src.zip
Export-Package: org.htmlcleaner.*;version=1.0
Import-Package: org.apache.tools.ant;resolution:=optional,\
org.jdom;resolution:=optional,\
*
Bundle-Version: 2.2.1
保存此文件后,查看生成的目录,瞧,这就是你的包!您可以为要包装的任意数量的捆绑包重复使用相同的项目。
然后,您可以将捆绑包发布到其中一个存储库。选择 bnd.bnd 文件并使用上下文菜单选择 Release Bundle。
编辑:注意 您不能直接使用来自其他项目的“包装”项目,因为 Eclipse 需要源代码树才能工作。有两种解决方法:
https://github.com/bndtools/bndtools/wiki/How-to-Wrap-Bundles
除了现有的答案之外,您可能对这篇博文感兴趣,该博文解释了如何使用“纯 maven”从 jar 创建 OSGi 包,即不需要特定的 IDE 和/或插件。(确切地说,在引擎盖下,它再次与真正的工作结合在一起;))