如何在不打开或导入Eclipse中的依赖包的情况下开发OSGi包?

时间:2014-02-11 00:35:11

标签: java eclipse maven plugins

我目前遇到的问题是eclipse无法解析清单中指定的插件依赖项。

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

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

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

为简单起见,让我分别称这些插件为“花式”和“核心”。

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

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

在eclipse IDE中为花式插件导入生成的项目后,我发现eclipse无法解析对其Manifest文件中指定的“core”插件的依赖性。 Eclipse报告错误,说“Bundle'com.mycompany.core'无法解析。 在“花式”项目的引用库下,我看到eclipse列出了“核心”插件。核心插件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如何识别已在.classpath文件中使用其位置指定的包?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

声明bundle依赖项时,请查看maven范围设置。我认为你正在寻找RUNTIME。