Spring Cloud Contracts Stub版本解析异常:期望正式版优先于快照版
嘿,这个问题我之前也碰到过,Stub Runner默认的版本解析逻辑有时候确实会优先快照版,但除了移除快照仓库,还有几个实用的办法可以调整优先级:
解决方案1:显式指定目标正式版本
直接在配置里明确指定要使用的正式版版本号,这样Stub Runner就会跳过自动版本解析,直接使用你指定的版本:
stubrunner: repository-root: http://myreleased.repo,http://mysnapshot.repo work-offline: false ids: "com.example:Foo:0.0.1:stubs:jar"
这里的ids参数精准锁定了Foo的0.0.1正式版,不管仓库里有没有更新的快照版,都会优先加载这个指定版本。
解决方案2:配置版本解析策略为优先正式版
通过version-resolver-strategy参数设置解析策略为RELEASE,让Stub Runner优先挑选仓库里的最新正式发布版,只有当没有正式版时才会 fallback 到快照版:
stubrunner: repository-root: http://myreleased.repo,http://mysnapshot.repo work-offline: false version-resolver-strategy: RELEASE
这个方案不需要硬编码版本号,又能确保正式版的优先级,应该是最贴合你需求的选项。
解决方案3:用Maven版本范围限定正式版
如果你不想固定版本号,还可以用Maven的版本范围语法,限定只选择正式版本(默认不包含快照版):
stubrunner: repository-root: http://myreleased.repo,http://mysnapshot.repo work-offline: false ids: "com.example:Foo:[0.0.1,):stubs:jar"
这里的[0.0.1,)表示选择大于等于0.0.1的所有正式版本,快照版会被自动排除。
内容的提问来源于stack exchange,提问作者Łukasz Dęgus
相关产品推荐
相关产品推荐

