13

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

我可能遗漏了一些东西,但本教程仅说明了如何从头开始创建项目。

4

3 回答 3

26

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

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

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

  2. 选择你想在这个新插件(包)中拥有的罐子。输入其他插件数据(名称、版本、ID 等)。

  3. 取消选中标志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".

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

于 2012-03-22T11:06:54.870 回答
10
  1. 只需在 bndtools 中为要转换的所有(或相关)jar 创建一个新项目。
  2. 给这个项目一个名称,该名称将作为转换后的 jar 包符号名称的前缀。例如,如果您的公司是 acme,则将项目称为“com.acme”
  3. 下载 jar 目录中的 jar 和源代码
  4. 使用 -classpath 条目(File/New/Bundle Descriptor)创建一个新的包描述符,例如:

-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 需要源代码树才能工作。有两种解决方法:

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

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

于 2012-03-23T10:30:38.090 回答
0

除了现有的答案之外,您可能对这篇博文感兴趣,该文解释了如何使用“纯 maven”从 jar 创建 OSGi 包,即不需要特定的 IDE 和/或插件。(确切地说,在引擎盖下,它再次与真正的工作结合在一起;))

于 2014-01-16T14:06:17.233 回答