【问题标题】:How to develop OSGi bundles without opening or importing the dependent bundles in Eclipse?如何在 Eclipse 中不打开或导入依赖包的情况下开发 OSGi 包?
【发布时间】:2014-02-11 00:35:10
【问题描述】:

我目前面临一个问题,即 eclipse 无法解析清单中指定的插件依赖项。

让我在 2 个插件的帮助下概括我的问题。 假设一个插件是核心插件“com.mycompany.core”,另一个是花哨插件“com.mycompany.fancy”。

插件 com.mycompany.core 是另一个团队拥有的插件,部署在我公司的 maven 存储库中,组 ID 为“com.example”

我的团队拥有 com.mycompany.fancy。该插件依赖于插件“com.mycompany.core”。

为简单起见,让我分别称这些插件为“fancy”和“core”。

我们只想在 Eclipse IDE 中使用“花式”插件。

我目前正在使用 tycho 构建“fancy”插件。fancy 插件的 pom 文件在其依赖项部分中明确依赖于“core”插件。 我为“花式”插件生成 .classpath 和 .project 使用 MVN eclipse:eclipse

在 Eclipse IDE 中为花哨的插件导入生成的项目后,我看到 Eclipse 无法解析对其清单文件中指定的“核心”插件的依赖关系。 Eclipse 报告错误说 “Bundle ‘com.mycompany.core’ 无法解析。 在“fancy”项目的引用库下,我看到 eclipse 列出了“core”插件。核心插件jar的位置是C:\mvn_repo\com\example\com.mycompany.core\1.0.0\com.mycompany.core-1.0.0.jar 这是在maven中部署“Core”插件jar的位置,这个位置是我机器上的有效位置。

我还看到为“fancy”生成的 .classpath 文件具有以下条目

但是,eclipse 无法解析“Fancy”清单中插件“Core”的依赖项。

从命令行,没有看到任何问题。但是,eclipse 中存在错误的事实意味着我们无法从 eclipse 中启动/运行任何东西,这对我们来说是一个阻碍。

有谁知道如何解决这个问题,或者 eclipse 需要什么来识别已在 .classpath 文件中指定位置的包?

【问题讨论】:

    标签: java eclipse maven plugins


    【解决方案1】:

    您需要定义一个Target Platform,Tycho 构建和您的 IDE 工作区都可以使用该Target Platform。 Eclipse 用于包/插件开发的默认行为是使用正在运行的 IDE 作为目标平台,但这是一个不幸的默认设置,因为对于几乎任何“真实”项目来说,这都是一个非常糟糕的主意。相反,您应该使用特定的 TP,您可以在其中准确指定您拥有的依赖项,以及 use that same target definition in Tycho, too

    【讨论】:

    【解决方案2】:

    在声明捆绑包依赖时查看 maven 范围设置。我想你正在寻找RUNTIME。

    【讨论】:

      猜你喜欢
      • 2011-10-08
      • 2020-01-27
      • 2014-11-29
      • 1970-01-01
      • 2013-09-16
      • 2019-03-03
      • 2021-07-05
      • 2014-08-25
      相关资源
      最近更新 更多