SPM无法通过HTTPS拉取包,SSH可行但子依赖仍用HTTPS的问题咨询
Swift Packages 依赖地址与解析问题解决方案
1. 统一将所有包改为SSH地址的方法
- 配置Git全局替换规则,自动将GitHub的HTTPS请求转为SSH:
该规则会让所有针对GitHub仓库的HTTPS拉取请求自动改用SSH,无需手动修改任何git config --global url."git@github.com:".insteadOf "https://github.com/"Package.swift中的依赖地址,包括嵌套的子依赖。若仅需当前项目生效,移除--global参数后在项目根目录执行即可。
2. 让SPM继续解析所有包而非在第一个错误处停止
Swift Package Manager默认遇到解析错误即终止,无官方配置直接跳过错误,但可通过以下方式优化处理流程:
- 单独拉取有问题的依赖到本地,通过
file://路径引用本地版本,绕过远程解析错误,待所有依赖加载正常后再切换回远程地址。 - 执行
swift package resolve --verbose命令查看完整解析日志,一次性定位所有异常依赖,批量处理避免反复运行中断。
3. 定位并解决错误根源
- 处理未纳入Git的本地包:进入本地包目录,执行
git init初始化仓库并提交初始代码,SPM要求本地依赖必须是有效的Git仓库,否则无法正常解析。 - 排查
swift-concurrency-extras报错:- 执行
swift package show dependencies生成完整依赖树,找到引入该HTTPS依赖的父包,确认是否因父依赖版本过旧导致子依赖地址未更新,尝试升级父依赖至最新版本。 - 验证GitHub SSH密钥有效性:执行
ssh -T git@github.com测试连接,确保本地拥有目标仓库的访问权限。 - 检查依赖版本合法性:确认
swift-concurrency-extras的依赖版本存在,避免引用已废弃的分支或无效版本号。
- 执行
内容的提问来源于stack exchange,提问作者Lucas van Dongen
相关产品推荐
相关产品推荐

