Spring Cloud Contract Stub Runner远程解析Stub Jar路径适配问询
解决StubRunnerRule兼容Releases/Snapshots仓库的问题
我懂你的需求啦——现在你的代码只能从指定的Snapshots仓库拉取Stub Jar,但希望不用每次发布定稿版本都改配置,让它能自动适配Releases仓库对吧?
给你几个靠谱的解决方案:
1. 优先使用Nexus组仓库(最推荐)
如果你的Nexus配置了组仓库(比如默认的public组),它会聚合Releases和Snapshots仓库的内容,只需要把repoRoot指向组仓库地址就行,StubRunner会自动在组里找到对应版本的Stub Jar:
public StubRunnerRule rule = new StubRunnerRule() .downloadStub("group", "artifact") .repoRoot("https://nexus-repo-path/content/groups/public/") .stubsMode(StubRunnerProperties.StubsMode.REMOTE);
这种方式最省心,不管你的Stub Jar是带SNAPSHOT后缀的快照版,还是正式发布版,组仓库都会帮你路由到正确的子仓库。
2. 配置多个仓库路径
如果没有组仓库,你可以直接给StubRunnerRule添加多个仓库地址,它会按顺序去查找:
public StubRunnerRule rule = new StubRunnerRule() .downloadStub("group", "artifact") .repoRoot("https://nexus-repo-path/content/repositories/releases/") .repoRoot("https://nexus-repo-path/content/repositories/snapshots/") .stubsMode(StubRunnerProperties.StubsMode.REMOTE);
这里我把Releases放在前面,会优先查找正式版;如果你的快照版使用更频繁,可以把Snapshots放在前面调整优先级。
注意:直接指向repositories/根路径不可行
你提到的https://nexus-repo-path/content/repositories/这种根路径,StubRunner是不会自动遍历下面的子仓库的,它只会把这个路径当成一个单独的仓库地址去请求,所以这种方式没法实现你的需求,还是用上面两种方法更稳妥。
内容的提问来源于stack exchange,提问作者Harry
相关产品推荐
相关产品推荐

