maven中的库依赖项。最佳做法

时间:2012-10-24 21:17:06

标签: java maven junit dependencies

我正在用我自己的junit runner编写测试库。它扩展了BlockJUnit4ClassRunner,从4.5开始直到......谁知道。我的库的用户应该能够选择任何junit版本(当然还有BlockJUnit4ClassRunner)。并且我不知道如何定义对junit的依赖(让我们说当前版本是4.10)。

  • 如果我提供[4.5,4.10],那么我必须在每个junit版本发布新版本
  • 我不确定[4.5,]是否是一个好的做法,因为它隐含地选择了最新版本并且构建可能不可重复

e.g。 mockito仅使用ant和junit 4.10进行编译,并且没有maven依赖。我也不知道这是不是一个好习惯。

我应该如何解决这种依赖性问题

3 个答案:

答案 0 :(得分:1)

如果你总是想要坚持使用最新版本的junit,那么请使用

<version>LATEST</version>

以上内容将始终引用最新发布的junit版本或快照版本。

如果您使用

<version>RELEASE</version>

然后它将引用存储库中存在的最后发布/非快照版本。

在宣布开放式版本范围时也没有问题,其中包括x.y.z之后的最新版本,即

<version>[x.y.z,)</version>

但是当junit世界中可能发生与您的工件不兼容的API级别更改时,事情会变得糟糕。从这个意义上说,最好提供一个确切的版本,并要求客户遵循相同的版本。

答案 1 :(得分:1)

通常,JUnit版本是向后兼容的[*]。开发人员非常谨慎,以便向后兼容。一种选择是声明对JUnit 4.5的依赖,然后用户可以在他们的pom中覆盖该版本(版本4.10),它应该仍然可以工作。

如果您正在执行上述操作并声称它适用于4.5之后的所有版本,那么您应该对所有版本进行测试,这应该相当容易。

[*]当然不推荐使用类和方法,但事情应该仍然有用。

答案 2 :(得分:0)

版本标记LATEST和RELEASE的问题仅由Maven 2.2.1和之前的no longer for Maven 3支持。所以事情就是避免它们。

此外,如果您定义了对JUnit的依赖关系,则用户可以使用不同的版本而不是定义的版本。