企业网Windows环境下用Nexus时Scalafmt下载失败求助
问题描述
在企业网络的Windows机器上通过Nexus使用Scalafmt时,运行scalafmt命令出现以下错误:
[error] failed to resolve Scalafmt version '2.4.6': X:\ProjectA\.scalafmt.conf [error] (Compile / scalafmt) failed to resolve Scalafmt version '2.6.4': X:\ProjectA\.scalafmt.conf [error] Total time: 87 s (01:27), completed 10-Jan-2023 10:56:22
相关版本信息:
- SBT版本:1.6.2
- scalafmt插件版本:2.2.1
- .scalafmt.conf中指定版本:2.4.6
解决方案
针对无法解析Scalafmt版本的问题,可以从以下几个方向排查:
1. 确认Nexus代理仓库配置
Scalafmt的包托管在Maven Central,需要确保企业Nexus已配置并启用Maven Central的代理仓库:
- 检查COURSIER_REPOSITORIES环境变量中的Nexus URL是否包含代理Maven Central的仓库(比如
http://your-nexus-host/repository/maven-public/),而非仅指向内部私有仓库。 - 在Windows命令行执行
echo %COURSIER_REPOSITORIES%,确认变量值正确加载且仓库地址可访问(可通过浏览器打开该URL验证仓库浏览权限)。
2. 匹配scalafmt插件与格式化器版本
scalafmt插件版本与配置文件中指定的格式化器版本存在兼容性限制:
- 当前插件版本2.2.1与格式化器版本2.4.6跨度较大,可能导致解析或兼容性问题。建议将插件版本升级至与格式化器版本一致(如2.4.6),修改
project/plugins.sbt:addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.4.6") - 同时确保
.scalafmt.conf中的version字段与插件版本保持一致。
3. 手动在SBT中添加解析器
若环境变量未生效,可直接在SBT配置中指定Nexus仓库:
- 在项目的
build.sbt或全局配置文件~/.sbt/1.0/global.sbt中添加:resolvers += "Nexus Maven Proxy" at "http://your-nexus-url/repository/maven-public/" - 同样在
project/plugins.sbt中添加上述解析器,确保插件本身也能从Nexus拉取。
4. 清理Coursier缓存
Windows下Coursier缓存默认路径为C:\Users\<你的用户名>\AppData\Local\Coursier\Cache,删除缓存目录后重新运行scalafmt命令,避免缓存中的无效数据干扰版本解析。
内容的提问来源于stack exchange,提问作者KK2486
相关产品推荐
相关产品推荐

