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
您可以试用提供的版本。我们给 +
总是下载最新的。您可以设置具体值,例如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>
我已经成功地在我的项目中的两个微服务之间建立了 Spring 云契约。昨天之前一切都很好。
在消费者方面,我引用了最新版本的存根,如下所示:
@AutoConfigureStubRunner(ids = {"com.example:http-server-dsl:+:stubs:8080"})
但这在某些情况下会导致问题,即生产方恢复其最新版本并切换回以前的版本。
或
不知何故,包含当前存根的 jar 版本低于 maven repo 中的最新版本。
Spring 云合同中有没有办法执行以下任一操作?
1) 配置消费者端获取当前项目版本(参考pom.xml中的项目版本)而不是maven repo中的最新版本?
或者
2) 将生产者端配置为具有静态版本的存根 jar,但保留其他项目 jar 的动态版本。这将允许消费者端引用相同静态版本的存根 jar
您可以试用提供的版本。我们给 +
总是下载最新的。您可以设置具体值,例如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>