【发布时间】:2020-01-09 05:27:58
【问题描述】:
我想将一些 GitHub 项目作为依赖项添加到我的 Eclipse RCP 插件中。 GitHub 项目是oshi 和leshan。
两个 GitHub 项目都提供了基于 maven Central 的 maven 构建,我可以使用。
但据我所知,到目前为止,我不能直接在 Eclipse RCP 插件中使用这些构建,因为它需要 OSGI 捆绑包 - 与“经典”Eclipse Java 项目相比。
到目前为止,我找到了三种处理这个问题的方法:
让 Eclipse 将 JAR 转换为 OSGI-Bundle 并将它们添加到我可以依赖的插件中(在此处描述 https://stackoverflow.com/a/3594698/12029492)
查看 GitHub 项目是否在 Eclipse Orbit 上可用,并将 p2 存储库添加到我的目标平台。 (此处描述为https://stackoverflow.com/a/56854979/12029492)遗憾的是,Orbit 网站上的 oshi 项目的版本比 GitHub 上的版本旧。
使用p2-maven-plugin 创建我自己的 p2 存储库并将其添加到我的目标平台。
我也研究了 Tycho,但据我了解,您只能在 Tycho 中添加一个 p2 存储库作为依赖项,这再次导致创建一个问题。
是否有另一种/更好的方式来处理 Eclipse RCP 插件中的非 OSGI 捆绑 Maven 构建?
编辑:我为我找到了使用 gradle(一个 gradle 插件 bnd-platform)的最佳方法,使用 maven Central 自动解决依赖关系并创建一个本地 p2 存储库,如选项 1 中所述 https://stackoverflow.com/a/29509794/12029492
【问题讨论】:
-
不,没有更好的方法。在 Maven 中,模块/包在编译/构建时解析,而在 OSGi 中,包可以在运行时启动和停止。为此,在 OSGi 中,JAR 必须包含额外的元数据,并且 p2 存储库必须包含元数据以解析导入的包。因此,您首先必须将 JAR 转换为 OSGi 包(或要求 JAR 的供应商这样做),然后通过 Tycho
tycho-p2-extras:publish-features-and-bundles创建本地 p2 存储库。 -
感谢您让我明白
-
我是 OSHI 的主要维护者。我以为我们已经通过
bnd-maven-plugin发布了 OSGi 包。我错了吗?有什么我需要配置的吗? -
是的,你的权利,看起来 OSHI 已经是一个 OSGi 包。很抱歉给您带来不便。
标签: maven eclipse-plugin dependencies eclipse-rcp tycho