首页 > 解决方案 > Spring Cloud 合约 jar 版本控制

问题描述

我已经成功地在我的项目中的两个微服务之间建立了 Spring Cloud 合约。直到昨天一切都很好。

在消费者方面,我引用了最新版本的存根,如下所示:

@AutoConfigureStubRunner(ids = {"com.example:http-server-dsl:+:stubs:8080"})

但这在某些情况下会导致问题,即生产者方恢复其最新版本并切换回以前的版本。

或者

不知何故,包含当前存根的 jar 的版本低于 maven repo 中的最新版本。

Spring Cloud 合约中是否有办法执行以下任一操作?

1)配置消费者端获取当前项目版本(指 pom.xml 中的项目版本)而不是来自 maven repo 的最新版本?

或者

2) 将生产者端配置为具有静态版本的存根 jar,但保留其他项目 jar 的动态版本。这将允许消费者方引用相同的存根 jar 静态版本

我阅读了文档https://cloud.spring.io/spring-cloud-static/spring-cloud-contract/2.1.1.RELEASE/single/spring-cloud-contract.html#_jar_versioning但没有帮助

标签: spring-cloud-contract

解决方案


您可以使用提供的版本。我们给+总是下载最新的。您可以设置一个具体的值,例如2.1.1.RELEASE。您还可以设置范围。总而言之,我们在下面使用 Ivy,因此您可以查看 Ivy 的规则http://ant.apache.org/ivy/history/latest-milestone/settings/version-matchers.html

1)配置消费者端选择当前项目版本而不是最新版本?

是什么current意思?是最新的吗?最新发布的?如果它是最新的发布选择+,但指向仅包含发布版本而不包含快照的存储库。

我阅读了文档https://cloud.spring.io/spring-cloud-static/spring-cloud-contract/2.1.1.RELEASE/single/spring-cloud-contract.html#_jar_versioning但没有帮助

本节缺少什么?您询问了静态存根,我们也在那里进行了描述@AutoConfigureStubRunner(ids = {"com.example:http-server-dsl:2.1.1:stubs:8080"})


推荐阅读