我正在构建RCP4应用程序。将非osgi jar添加到RCP4项目
我有两个非osgi罐子叫a.jar和b.jar。两个罐子都有很多非osgi依赖关系。 a.jar的一个依赖是b.jar。因此,层次结构如下所示:
My application
|--a.jar
|----aDependency1.jar
|----aDependency2.jar
|----aDependencyN.jar
|----b.jar
|------bDependency1.jar
|------bDependency2.jar
|------bDependencyN.jar
一些bDependencyN.jars的不同版本的aDependencyN.jars 的(一个例子就是共享记录-1.0.4.jar VS共享记录-1.1.2 .jar)
我需要从我的RCP4应用程序直接引用a.jar和b.jar。换句话说,当我写的代码,我会从a.jar文件导入包和b.jar)
这是最好的办法:
通过命令行使用BND 2.4把所有非osgi罐入osgi。然后我通过目标文件将每个jar添加到我的项目中
创建一个新项目“从现有JAR归档插件”,选择a.jar及其所有依赖项并将其导出为“可部署插件和片段“叫a.with.libs.jar。我对b.jar也做了同样的事情并创建了b.with.libs.jar。然后通过目标文件将这两个新罐添加到我的项目中
创建一个新项目“从现有JAR归档插件”,并选择a.jar及其所有依赖关系,以及b.jar和全部它的依赖关系并将其导出为一个名为ab.with.libs.jar的“可部署插件和片段”。然后我通过目标文件将新罐添加到我的项目中
有没有比上述建议更好的方法?
嗨,感谢您的回复。我目前的项目不使用Maven,我以前从未使用过Gradle。 bnd-platform网站上的文档对我来说似乎有点高级,我不知道从哪里开始设置反映上述示例(所有本地jar)的正确gradle文件。 – ekjcfn3902039
如果它都是本地Jars(而不是Maven依赖),那么bnd-platform会失去一些好处,因为它不能自动添加传递依赖。作为出发点,您可以使用上面提到的模板,从文档中您只需要本地依赖项部分添加Jars:https://github.com/stempler/bnd-platform#local-dependencies – stempler