如何使用 eclipse 和 bndtools 将 jar 转换为 OSGi bundle

2022-09-04 06:03:28

我正在寻找一个分步指南,使用eclipse bndtools插件将jar转换为OSGi捆绑包。我知道可以使用命令行使用bnd执行此操作,但是知道如何通过IDE执行相同的操作会很好。

我可能错过了一些东西,但本教程只解释了如何从头开始创建项目。


答案 1

按照从标准jar创建Eclipse插件(OSGi捆绑包)一文来实现这一点。虽然这种方法不使用Bnd,但你将能够实现你想要的。

简而言之,您可以执行以下操作:

  1. 通过选择创建新的插件项目File-> New -> Project...-> Plug-in Development -> "Plug-in from Existing JAR Archives"

  2. 选择你想要在这个新插件(捆绑包)中的jar。输入其他插件数据(名称,版本,ID等)。

  3. 取消选中标志 。按然后完成。Unzip the JAR archive into the project

取消选中复选框 ,可防止从 Jar 中提取通常不需要的类文件。Unzip the JAR archive into the project

编辑:导出捆绑包以将其安装到 OSGi 运行时中。选择您的捆绑包,然后选择 。File -> Export -> Plug-in Development -> "Deployable plug-ins and fragment"

取消选中导出源的复选框。


答案 2
  1. 只需在bndtools中为要转换的所有(或相关)jar创建一个新项目即可。
  2. 为此项目指定一个名称,该名称将成为已转换 jar 的捆绑包符号名称的前缀。例如,如果您的公司是acme,请将该项目称为“com.acme”
  3. 在 jar 目录中下载 jar 和源代码
  4. 创建一个带有 -classpath 条目(File/New/Bundle 描述符)的新捆绑包描述符,例如:

-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 文件,然后使用上下文菜单选择“发布捆绑包”。


编辑: NB你不能直接使用其他项目中的“wrap”项目,因为Eclipse需要源代码树才能工作。有 2 种解决方法:

  • 将打包的捆绑放在存储库中,并从那里使用它(如上所述)
  • 解压缩项目的 src 文件夹中的源代码树

https://github.com/bndtools/bndtools/wiki/How-to-Wrap-Bundles


推荐