Spring 云合同 jar 版本控制

Spring Cloud contract jar versioning

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

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

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

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

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

Spring 云合同中有没有办法执行以下任一操作?

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 但没有帮助

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

1) configure the consumer side to pick up the current project version instead of the latest one?

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

I read the documentation https://cloud.spring.io/spring-cloud-static/spring-cloud-contract/2.1.1.RELEASE/single/spring-cloud-contract.html#_jar_versioning but it did not help

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

以下工作(对于 Maven 项目)。

第 1 步:我们可以在 application.properties 文件中提供它,而不是在 @AutoConfigureStubRunner 中指定 ID,如下所示(注意 @project.version@,这是指 maven 项目版本)

stubrunner.ids=com.example:http-server-dsl:@project.version@:stubs:8080

第 2 步:为了能够在属性文件中使用 @project.version@,请在 pom.xml 的构建部分添加以下内容:

 <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>

在插件部分:

   <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>${mvn-resources-plugin.version}</version>
        <configuration>
            <delimiters>
                <delimiter>@</delimiter>
            </delimiters>
            <useDefaultDelimiters>false</useDefaultDelimiters>
        </configuration>
    </plugin>