如何在tycho中引用mockito?

时间:2011-09-04 14:53:26

标签: java maven mockito tycho

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

My target-platform

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

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

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

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

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

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

  1. Nexus Pro
    Nexus的专业版支持p2-Proxy存储库,它可以将Maven Central存储库等默认maven存储库包装到p2更新站点,但专业版每年的成本约为800美元。
  2. 创建eclipse-repository
    您可以使用打包 eclipse-repository 创建一个包含所有所需捆绑包的新maven项目。然后将创建的工件部署到公共Web服务器。
  3. 在您的目标平台中,您可以参考Nexus p2代理仓库或网络托管的p2-repo。 有没有人知道其他方式 - 可能更方便/更便宜?

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

1 个答案:

答案 0 :(得分: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>

请参阅adding a dependency on a pom-first artifact上的说明。 (我不确定你是否需要指定解析器。)

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