sbt无法从Nexus Repository Manager下载快照版本依赖如何解决
sbt无法从Nexus下载Snapshot版本依赖排查解决步骤
- 第一步:检查Nexus仓库配置
确认你配置的nexus repo url对应的仓库组已经加入了Snapshot类型的子仓库,Nexus默认的Release仓库组不会自动包含Snapshot仓库,需手动添加。同时检查目标Snapshot仓库的权限配置:是否开启了允许下载的权限、目标1.0.0-SNAPSHOT版本的包是否已经成功上传到该仓库中。 - 第二步:优化sbt仓库解析配置
默认的resolver写法不会显式声明支持快照版本解析,可调整为显式声明支持快照的配置:
同时检查全局resolvers += ("Sonatype Nexus Repository Manager" at "nexus repo url").withAllowInsecureProtocol(true) // 非https的仓库需要加这行 // 或显式指定Maven风格仓库的快照策略 resolvers += Resolver.maven("Sonatype Nexus Repository Manager", "nexus repo url", Patterns(true))~/.sbt/repositories文件,是否存在禁用快照解析的配置。 - 第三步:调整快照更新策略
仅给依赖加changing()还不够,需在build.sbt中添加快照自动更新的配置:
如果本地有旧的缓存失败记录,执行以下命令清理缓存并强制更新依赖:updateOptions := updateOptions.value.withLatestSnapshots(true)rm -rf ~/.ivy2/cache/[你的组织名]/[你的依赖名] # 替换为对应依赖的缓存路径 sbt clean update - 第四步:检查Snapshot仓库权限
部分企业的Nexus会对Snapshot仓库设置单独的访问权限,Release仓库可匿名访问不代表Snapshot仓库也可以,检查~/.sbt/1.0/credentials.sbt中的凭证是否配置正确,是否对该Snapshot仓库生效。 - 第五步:查看详细日志定位问题
执行带debug日志的更新命令,查看sbt实际请求的依赖地址、返回状态码:
返回404代表依赖不存在/路径配置错误,返回401/403代表权限配置错误,返回5xx代表Nexus服务异常。sbt -debug update
内容的提问来源于stack exchange,提问作者Codroid
相关产品推荐
相关产品推荐

