我有一个包含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工具似乎没有任何问题。
答案 0 :(得分:0)
这里可能有几个问题:
当您开始测试时,Eclipse会将JUnit放在您的类路径中。它需要它的JUnit运行器能够与正在运行的测试过程交谈。这很少会引起问题,但你应该知道它。
您不希望传递依赖,在POM中的<exclude>
内添加<dependency>
元素。这当然只适用于POM-first构建,这在Eclipse世界中似乎很少见。
如果你使用Manifest-First版本,那么你就是在处理OSGi。 OSGi不允许你排除依赖,但它也隔离了不同的部分,因此Xtend编译器可以使用它的古老版本的JUnit而没有问题,因为你的其他插件不会看到它。
因此,下一步是找出依赖关系的来源并正确排除它。
为了更好地帮助您,我需要了解更多关于您认为“xtend编译器似乎看到旧JUnit版本”的原因。