Eclipse junit测试使用错误版本的maven jar

时间:2015-09-23 16:28:17

标签: eclipse maven junit m2eclipse

我有两个项目可以编译并一起运行。这些项目使用不同版本的某些罐子。所以我可能在我的maven回购中有foo.1.15.jar和foo.1.16.jar。 pom文件正确地指定了哪个项目应该使用哪个jar,我可以运行mvn verify来运行我的所有集成测试,而无需从命令行发出问题。

但是,当我尝试在eclipse中运行junit测试时,我经常会遇到错误的jar版本错误。我相信eclipse总是使用它在maven repo中找到的jar的最新版本,所以如果它看到foo.1.15和foo.1.16它将使用16版本。问题是我想要 15版本,如果它们与16版本一起运行,则测试失败,因为它不向后兼容。

如何让eclipse认识到它需要使用旧版本?特别是有一种方法可以让junit测试识别我的pom文件并使用pom中指定的正确jar版本吗?

如果相关,我正在使用m2eclipse。

编辑:看起来这个问题不是坚持每次使用最新的jar。

问题是我的项目A使用我的项目B.A使用foo.16而B使用foo.15。 A的junit测试尝试使用foo.16,即使它在B中运行依赖于15的类。但是,我无法真正改变依赖关系,A需要16和B需要15.我可以让eclipse了解这一点吗?

1 个答案:

答案 0 :(得分:1)

您对Eclipse的假设始终使用最新版本的Maven工件是不正确的。

但是,Eclipse每个项目仅支持一个类路径,并且无法区分Maven依赖性作用域,因此测试作用域依赖性也在Eclipse编译和运行时类路径上。很难说这是否真的与你的问题有关。

您可以打开POM编辑器并查看“依赖关系层次结构”选项卡,以找出(传递)依赖关系路径以及用于每个工件的版本。这可能会为您提供修复设置的线索。