如何在tycho中引用mockito?

Mar*_*lze 7 java mockito tycho maven

我目前正试图通过tycho完成我的构建(~30个捆绑).在我的单元测试中
使用Mockito时遇到了一些令人困惑的问题.
eclipse-test-plugin为测试包创建了一个as片段项目.由于tycho应该使用清单解析所需的包,我从中删除了对mockito的依赖pom.xml.
然后,当我尝试将mockito添加到清单中所需的包中时,未列出mockito.我找到了这篇文章并创建了一个指向eclipse indigo的目标平台.
我包含了平台细节,所以我不需要eclipse delta包.然后发生了第一件奇怪的事情.Eclipse告诉我有一些不可靠的依赖关系,当我在eclipse中将新创建的目标平台设置为活动时,eclipse不再org.osgi.framework能解决诸如此类的软件包等问题.但是,当我构建一个eclipse-product使用tycho和目标平台时,它正在工作.

我的目标平台

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

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

所以我的第一个问题是"我的目​​标平台出了什么问题,以便tycho能够使用它而不是eclipse?"

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

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

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

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

在您的目标平台中,您可以参考Nexus p2-proxy仓库或Web托管的p2-repo.
有谁知道其他方式 - 可能更方便/更便宜?

请帮助我理解混乱的tycho世界......
提前谢谢

Mar*_*lis 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>
Run Code Online (Sandbox Code Playgroud)

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

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