将非osgi JAR添加到RCP4项目

将非osgi JAR添加到RCP4项目,osgi,rcp,Osgi,Rcp,我正在构建一个RCP4应用程序 我有两个非osgi jar,分别称为a.jar和b.jar。两个jar都有大量的非osgi依赖项。a.jar的一个依赖项是b.jar。因此,层次结构如下所示: My application |--a.jar |----aDependency1.jar |----aDependency2.jar |----aDependencyN.jar |----b.jar |------bDependency1.jar |------bDependency2.jar |----

我正在构建一个RCP4应用程序

我有两个非osgi jar,分别称为a.jar和b.jar。两个jar都有大量的非osgi依赖项。a.jar的一个依赖项是b.jar。因此,层次结构如下所示:

My application
|--a.jar
|----aDependency1.jar
|----aDependency2.jar
|----aDependencyN.jar
|----b.jar
|------bDependency1.jar
|------bDependency2.jar
|------bDependencyN.jar
一些bdependency.jar是Adependency.jar的不同版本 (例如commons-logging-1.0.4.jar与commons-logging-1.1.2.jar)

我需要从我的RCP4应用程序中直接引用a.jar和b.jar。换句话说,当我编写代码时,我将从a.jar和b.jar导入包)

哪种方法是最好的:

  • 通过命令行使用BND2.4将所有非osgi jar转换为osgi jar。然后,我通过目标文件将每个jar添加到我的项目中

  • 创建一个新项目“Plug-in from existing JAR archives”,选择一个.JAR及其所有依赖项,并将其导出为一个名为a.with.libs.JAR的“可部署插件和片段”。我对b.jar执行相同的操作,并创建b.with.libs.jar。然后,我通过目标文件将这两个新JAR添加到我的项目中

  • 创建一个新项目“Plug-in from existing JAR archives”,选择a.JAR及其所有依赖项,选择b.JAR及其所有依赖项,并将其导出为名为ab.with.libs.JAR的“可部署插件和片段”。然后,我通过目标文件将新jar添加到我的项目中

  • 有没有比上述建议更好的方法


一个选项是使用(我也是作者)管理第三方依赖项并从中创建OSGi捆绑包。您可以将它用于从Maven存储库和本地JAR检索的依赖项(请参阅)。配置Maven依赖项时,它还将包括可传递依赖项。引擎盖下使用bnd。如果需要,您还可以自定义罐子的包装方式。bnd平台是Gradle的一个插件,您可以轻松地开始-只需添加您的依赖项,并按照项目自述(捆绑符号名称、版本)中的描述提供配置,然后运行
gradlew捆绑
。然后,可以将创建的捆绑包添加到目标平台。您还可以使用bnd平台构建p2存储库/更新站点。

您好,感谢您的回复。我当前的项目没有使用Maven,我以前从未使用过Gradle。bnd平台网站上的文档对我来说似乎有点高级,我不知道从哪里开始设置一个正确的gradle文件来反映上面的示例(所有本地JAR)。如果是所有本地JAR(而不是Maven依赖项),bnd平台将失去一点好处,因为它无法自动添加可传递的依赖项。作为起点,您可以使用我上面提到的模板,从文档中,您只需要本地依赖项部分来添加JAR: