我如何诊断和修复类路径问题?

时间:2013-11-15 09:55:26

标签: maven classpath xtend

我有一个包含xtend源的tycho项目。我的一个依赖项附带了旧版本的JUnit,它不包含我需要的所有功能。我也依赖于JUnit 4.11。 Tycho构建很好,但xtend编译器(xtend-maven-plugin)似乎看到了旧的JUnit版本而不是新版本。我该如何解决这个问题?

[编辑]

澄清一下,这就是我的依赖关系的样子:

Project A
|--Project B
|  |-- JUnit 4.8.2
|--JUnit 4.11

在tycho的OSGi世界中,这没有问题。但是,xtend编译器使用JUnit 4.8.2类解析项目A中的类。我知道这是因为违规类是注释@Parameters,它在4.11中获得了“name”属性。而这正是令人讨厌的部分,它使xtend maven插件不能正确编译。 Eclipse xtend工具似乎没有任何问题。

1 个答案:

答案 0 :(得分:0)

这里可能有几个问题:

  1. 当您开始测试时,Eclipse会将JUnit放在您的类路径中。它需要它的JUnit运行器能够与正在运行的测试过程交谈。这很少会引起问题,但你应该知道它。

  2. 您不希望传递依赖,在POM中的<exclude>内添加<dependency>元素。这当然只适用于POM-first构建,这在Eclipse世界中似乎很少见。

  3. 如果你使用Manifest-First版本,那么你就是在处理OSGi。 OSGi不允许你排除依赖,但它也隔离了不同的部分,因此Xtend编译器可以使用它的古老版本的JUnit而没有问题,因为你的其他插件不会看到它。

  4. 因此,下一步是找出依赖关系的来源并正确排除它。

    为了更好地帮助您,我需要了解更多关于您认为“xtend编译器似乎看到旧JUnit版本”的原因。