java - 将 Eclipse 指向 mvn repo 中的正确 jar 版本

标签 java eclipse maven

我们的 maven 存储库当前有两个版本的mockito,这两个版本都作为其他 jar 的依赖项而被拉入,并且每个版本都在不同的子项目中使用。我们的集成测试是一个单独的项目,使用与我们的核心应用程序使用的单元测试不同的版本。

mockito 版本更改了方法的签名,使其无法向后计算。由于每个mockito版本都依赖于jar,所以我很难重新配置maven以在每个项目中仅使用一个版本的mockito。

当我从 eclipse 或命令行直接运行 maven 时,这不是问题,基于 pom 文件的每个项目都使用正确的 mockito 版本。但是,当我尝试在 eclipse 中运行单元测试时,我收到了 NoSuchMethodError,这似乎是由于 eclipse 使用了不正确的 mockito 版本。有没有办法确保我的junit测试使用我想要的mockito版本,也就是pom文件中指定的版本?

最佳答案

您应该做的第一件事是将mockito声明为使用它的模块的直接依赖项,而不是通过传递依赖项来依赖它。 Maven/Eclipse/m2e 应该 first use the version that is declared locally .

如果这无法解决问题,根据我的经验,它可以帮助重新排序 POM 中的依赖项,并随后检查项目资源管理器中的 Maven 依赖项容器或 POM 编辑器中的“依赖项层次结构”选项卡,以查看现在是否使用了正确的版本。通常,尝试将有问题的依赖项移动到依赖项列表中的第一个位置或最后一个位置可以解决问题。

另一个(可能是附加的)选项是向该依赖项添加排除,该依赖项会引入“错误”版本的mockito。再次检查“依赖关系层次结构”选项卡以查看依赖项来自何处。

最后,您应该避免头痛并设置一个项目范围的 dependency management其中涵盖应用程序中的单元测试以及集成测试。

祝你好运;)

关于java - 将 Eclipse 指向 mvn repo 中的正确 jar 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31969286/

相关文章:

eclipse - 在IntelliJ IDEA中运行jar配置

java - Jetty Web 服务器拒绝在 Linux 上连接

java - 如何指定maven的distributionManagement组织范围?

java - 如何将我的随机值放入java中的数组中?

java - 为什么日公报的 Eclipse 插件不起作用?

Eclipse Juno JSP 语法高亮不起作用

java - maven项目中的资源和配置加载

maven - 记录或打印到 Liquibase 生成的文件 SQL

java - Wildfly 未安装所需的服务 :\

java - 对于大 n,java.lang.Math.pow(x, n) 的准确/精确度如何?