0

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

[编辑]

为了澄清,这就是我的依赖项的样子:

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

在第谷的 OSGi 世界中,这不是问题。但是,xtend 编译器使用 JUnit 4.8.2 类解析项目 A 中的类。我知道这一点是因为有问题的类是注释@Parameters,它在 4.11 中获得了属性“name”。这正是使 xtend maven 插件无法正确编译的有问题的部分。Eclipse xtend 工具似乎没有问题。

4

1 回答 1

0

这里可能有几个问题:

  1. 当您开始测试时,Eclipse 会将 JUnit 放在您的类路径中。它需要它的 JUnit 运行器才能与正在运行的测试进程对话。这很少会导致问题,但您应该意识到这一点。

  2. 如果您不想要传递依赖,请在您的 POM 中添加一个<exclude>元素。<dependency>这当然只适用于在 Eclipse 世界中似乎很少见的 POM 优先构建。

  3. 如果您使用 Manifest-First 构建,那么您正在处理 OSGi。OSGi 不允许您排除依赖项,但它也隔离了不同的部分,因此 Xtend 编译器可以毫无问题地使用它的古老版本的 JUnit,因为您的其他插件不会看到这一点。

因此,下一步是找出该依赖项来自何处并正确排除它。

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

于 2013-11-15T10:39:12.997 回答