You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

企业网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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 11:20:56