我应该如何检索最新版本的Maven项目以进行合同测试?

时间:2016-12-26 17:54:37

标签: java maven automated-tests dependency-management semantic-versioning

我们正在使用Maven和Nexus在我们的基础架构中分发组件(Maven项目)。为了论证,我们假设我们有两个团队:Team Foo和Team Bar;并且Bar中的组件依赖于Foo中的组件。

Team Bar希望编写合同测试,以检查组件foo是否按预期运行。这些测试每晚都会针对项目foo的最新稳定开发版本(CI之后的git master)运行。 Team Bar可以根据bar/pom.xml的最新版本编写一个Maven项目foo吗?我们该怎么做呢?

我们正在尝试通过版本命名来解决这个问题。我们总是将欠开发版本命名为master-SNAPSHOT(或其他内容),而不是版本标签0.1-SNAPSHOT -> 0.1 -> 0.2-SNAPSHOT -> 0.2,它将始终返回master-SNAPSHOT,如master-SNAPSHOT -> 0.1 -> master-SNAPSHOT -> 0.2。然后,合同测试项目bar可以将其与foo的依赖关系声明为com.acme:foo:master-SNAPSHOT

但是这看起来太笨重了(打破常见的Maven练习和东西)......对于这种事情,是否有更标准的练习?我们应该使用Maven Versions Plugin吗?我们应该从外部将最新版本的字符串注入Maven项目吗?或者完全放弃Maven?

1 个答案:

答案 0 :(得分:2)

合同测试模块通常与实施合同的模块有很强的关系。

因此,我建议在父项目中将两个模块并排发展。

制作多模块maven项目的foobar个模块。然后让bar依赖foo,就像你自己建议的那样。分配相同的版本${parent.version}。这意味着您在版本之间使用${parent.version}-SNAPSHOT

继续发展和发布您的项目,就像使用单个模块一样,最好是在发布时使用maven-release-plugin。它将同时提升所有模块的版本,作为release:prepare目标的一部分。