如何在tycho中引用mockito?
我目前正试图通过tycho完成我的构建(~30个捆绑)。
在我的unit testing中使用Mockito时遇到了一些令人困惑的问题。
我创建了一个eclipse-test-plugin
作为测试包的片段项目。 由于tycho应该使用清单解析所需的bundle,我从pom.xml
删除了对mockito的依赖。
然后,当我尝试将mockito添加到清单中的必需包时,mockito未列出。 我找到了这篇文章并创建了一个指向eclipse indigo的目标平台。
我包含了平台细节,所以我不需要eclipse delta包。 然后发生了第一件奇怪的事情。 Eclipse告诉我有一些不可靠的依赖关系,当我在eclipse中将新创建的目标平台设置为活动时,不再有像org.osgi.framework
等的包可以通过eclipse解决。 但是当我使用tycho和目标平台构建一个eclipse-product
,它正在运行。
如果我将当前的eclipse安装设置为活动平台,则会解析捆绑包。 我选择了以下的indigo版本:
- Eclipse RCP插件开发人员资源
- Equinox目标组件
- Jetty目标组件
所以我的第一个问题是“我的目标平台出了什么问题,以便tycho能够使用它而不是eclipse?”
为了更接近我原来的问题(让mockito运行)我将当前的eclipse安装设置为活动目标平台。 Eclipse然后可以解析org.osgi.framework
包和其他包。
然后我将之前删除的依赖关系再次添加到了我的pom.xml
就像上面提到的那样。 但是当我尝试将它添加到清单中的必需包时,我仍然找不到mockito。
所以我的第二个问题是“我做错了什么?你如何引用未在eclipse更新站点发布的包,例如maven中央存储库?”
更新:在我的研究期间,我发现了两种方法, 即在我的目标平台中包含来自非p2-update-sites的 bundle:
- Nexus Pro
Nexus的专业版支持p2-Proxy存储库,它可以将Maven Central存储库等默认maven存储库包装到p2更新站点,但专业版本每年的成本约为800美元。 - 创建一个eclipse-repository
您可以使用打包eclipse-repository
创建一个新的maven项目, 包括所有您想要的包。 然后将创建的工件部署到公共Web服务器。
在您的目标平台中,您可以参考Nexus p2-proxy仓库或Web托管的p2-repo。
有没有人知道其他方式 – 可能更方便/更便宜?
请帮助我理解混乱的tycho世界……
提前致谢
如果mockito不在您的目标平台中(并且您没有在p2存储库中),最简单的方法可能是将依赖项重新添加回您的pom(无需从清单中删除mockito导入) 。
我认为你还需要在pom中指定以下内容,在target-platform-configuration插件的配置中:
org.eclipse.tycho target-platform-configuration ${tycho-version} consider
请参阅有关在pom-first工件上添加依赖项的说明。 (我不确定你是否需要指定解析器)。
关于对Nexus中p2存储库的支持,我的理解是Nexus的p2插件从那时起就是开源的:
- Nexus – P2存储库插件
- Nexus – Bundle Maker
- 用于nexus-p2-repository-plugin的Github存储库