我在我的项目中成功建立了两个微服务之间的Spring云合约。直到昨天一切都很好。
在消费者方面,我所引用的存根的最新版本如下:
:schema [Sales]
-tuples DC { [Countries].members}
+tuples DC { [Countries].[UK]}
但这在某些情况下会导致问题,即生产者方还原了其最新版本并切换回先前的版本。
或
某种程度上,存在一种情况,即包含当前存根的jar的版本低于maven repo中的最新版本。
Spring云合约中是否可以执行以下任一操作?
1)配置使用者方以获取当前项目版本(指pom.xml中的项目版本),而不是maven回购中的最新版本?
或
2)将生产者端配置为具有存根jar的静态版本,但保留其他项目jar的动态版本。这样一来,消费者方就可以引用相同的静态版本的存根jar
答案 0 :(得分:2)
您可以试用提供的版本。我们给+
始终下载最新版本。您可以设置一个具体值,例如2.1.1.RELEASE
。您还可以设置范围。总而言之,我们在下面使用了Ivy,因此您可以查看Ivy http://ant.apache.org/ivy/history/latest-milestone/settings/version-matchers.html
1)配置使用者方以获取当前项目版本,而不是最新版本?
current
是什么意思?是最新的吗?最新发布?如果它是最新的发行版,请选择+
,但指向仅包含发行版而没有快照的回购。
本节缺少什么?您询问了静态存根,我们也在@AutoConfigureStubRunner(ids = {"com.example:http-server-dsl:2.1.1:stubs:8080"})
中对其进行了描述。
答案 1 :(得分:1)
以下工作(针对Maven项目)。
第1步:我们无需在@AutoConfigureStubRunner
中指定ID,而是可以在application.properties文件中提供它,如下所示(注意@project.version@
,指的是Maven项目版本)
stubrunner.ids=com.example:http-server-dsl:@project.version@:stubs:8080
第2步:要在属性文件中使用@project.version@
,请在pom.xml
的build部分中添加以下内容:
<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>