java - 如何在 tycho 中引用 mockito?

标签 java maven mockito tycho

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

My target-platform

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

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

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

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

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

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

  1. Nexus 专业版
    Nexus 的专业版支持 p2-Proxy 存储库,它可以将默认的 maven 存储库(如 Maven Central Repository)包装到 p2 更新站点中,但专业版的费用约为每年 800 美元。
  2. 创建 eclipse-repository
    您可以使用打包创建一个新的 Maven 项目 eclipse-repository 包括所有您想要的包。然后将创建的 Artifact 部署到公共(public)网络服务器。

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

请帮我多了解一下第谷的扑朔迷离的世界……
提前致谢

最佳答案

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

我认为您还需要在目标平台配置插件的配置中的 pom 中指定以下内容:

  <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 插件已经开源:

关于java - 如何在 tycho 中引用 mockito?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7299993/

相关文章:

java - 在自引用 Java 类中查找父对象

maven - sudo 将使用哪个 maven settings.xml 文件?

java - 摆脱 org.eclipse.m2e :lifecycle-mapping 的 POM 未找到警告

unit-testing - 如何在不模拟所有内容的情况下编写好的单元测试?

java - 验证 completablefutures 列表的大小

java - 将信息传递给 JavaFX Button handler() 例程

java - Hadoop - 直接从 Mapper 写入 HBase

java - 在 Tomcat docker 容器中启用 JMX

java - Eclipse - 无法加载类 "org.slf4j.impl.StaticLoggerBinder"

java - 使用 Mockito 验证发送到未在模拟类中直接调用的方法的参数