7

我目前正在尝试由 tycho 完成我的构建(约 30 个捆绑包)。在我的单元测试中使用Mockito
时,我遇到了一些令人困惑的问题。 我为测试的包创建了一个片段项目。由于 tycho 应该使用清单解析所需的包,我从. 然后,当我尝试将 mockito 添加到清单中的所需捆绑包时,未列出 mockito。我找到了这篇文章并创建了一个指向 eclipse indigo 的目标平台。
eclipse-test-pluginpom.xml

我包括了平台细节,所以我不需要 eclipse delta 包。然后第一个奇怪的事情发生了。Eclipse 告诉我存在一些无法满足的依赖关系,当我在 eclipse 中将新创建的目标平台设置为活动时,eclipseorg.osgi.framework无法解决更多的包,例如 等。但是当我构建一个eclipse-product使用 tycho 和目标平台时,它正在工作。

我的目标平台

如果我将当前的 eclipse 安装设置为活动平台,则捆绑包被解析。我选择了以下 indigo 版本:

  • Eclipse RCP 插件开发人员资源
  • Equinox 目标组件
  • 码头目标组件

所以我的第一个问题是“我的目标平台出了什么问题,所以 tycho 可以使用它,但 eclipse 不行?”

为了更接近我的原始问题(让 mockito 运行),我将当前的 eclipse 安装设置为活动目标平台。Eclipse 然后可以解析org.osgi.framework包和其他。
然后,我pom.xml在上述帖子中再次添加了先前删除的对 mockito 的依赖项。但是,当我尝试将其添加到清单中所需的捆绑包时,我仍然找不到 mockito。

所以我的第二个问题是“我做错了什么?你如何引用未在 eclipse 更新站点上发布的包,例如 maven 中央存储库?”

更新:在我的研究中,我发现了两种在我的目标平台中包含来自非 p2-update-sites的捆绑包的方法:

  1. Nexus Pro Nexus
    专业版支持 p2-Proxy 存储库,它可以将 Maven 中央存储库等默认 maven 存储库包装到 p2 更新站点中,但专业版每年的成本约为 800 美元。
  2. 创建一个 eclipse-repository
    您可以创建一个新的 maven 项目, eclipse-repository 其中包含所有您想要的包。然后将创建的工件部署到公共 Web 服务器。

然后,在您的目标平台中,您可以引用 Nexus p2-proxy 存储库或网络托管的 p2-repo。
有谁知道其他方式 - 可能更方便/更便宜?

请帮助我更多地了解第谷令人困惑的世界......
在此先感谢

4

1 回答 1

3

如果 mockito 不在您的目标平台中(并且您在 p2 存储库中没有它),最简单的方法可能是将依赖项重新添加到您的 pom 中(不从清单中删除 mockito 导入) .

我认为您还需要在 pom 中,在 target-platform-configuration 插件的配置中指定以下内容:

  <plugin>
    <groupId>org.eclipse.tycho</groupId>
    <artifactId>target-platform-configuration</artifactId>
    <version>${tycho-version}</version>
    <configuration>
      <pomDependencies>consider</pomDependencies>
    </configuration>
  </plugin>

请参阅添加对 pom-first artifact 的依赖项的说明。(我不确定您是否需要指定解析器)。

关于 Nexus 中对 p2 存储库的支持,我的理解是 Nexus 的 p2 插件已经开源:

于 2011-10-20T14:49:55.023 回答