Sbt未加载正确全局插件版本致依赖解析失败求助
解决sbt assembly时找不到com.geirsson#sbt-scalafmt;1.5.1的问题
问题根源
sbt 1.x版本(如你使用的1.1.4)默认应加载~/.sbt/1.0/plugins全局插件目录,但当前环境存在配置残留,导致错误加载了0.13版本的插件目录。而sbt-scalafmt 1.5.1是适配sbt 1.x的依赖,在0.13的解析路径中无法找到,因此抛出ResolveException。
具体解决步骤
检查并清理环境变量
执行命令查看是否有强制指定旧插件目录的环境变量:echo $SBT_GLOBAL_PLUGIN_DIRECTORY如果输出为
/Users/<username>/.sbt/0.13/plugins,需要在你的shell配置文件(如~/.bashrc、~/.zshrc)中删除对应的export SBT_GLOBAL_PLUGIN_DIRECTORY=...语句,保存后重启终端生效。强制指定sbt使用1.x插件目录
在项目根目录创建.sbtopts文件,添加以下内容(替换为你的实际用户路径):-Dsbt.global.plugins=/Users/<username>/.sbt/1.0/plugins这会让sbt启动时强制加载1.x版本的全局插件目录,避免读取旧目录。
验证项目本地插件配置
打开项目根目录下的project/plugins.sbt,确认sbt-scalafmt的依赖配置正确:addSbtPlugin("com.geirsson" % "sbt-scalafmt" % "1.5.1")同时确保文件中没有引入适配sbt 0.13的仓库或依赖。
彻底清理缓存
除了已尝试的操作,还需要清理这些缓存目录:rm -rf ~/.sbt/boot rm -rf ./target ./project/target之后重新执行
sbt clean assembly。验证插件加载路径
执行以下命令确认sbt使用的插件目录是否正确:sbt "show sbtGlobalPluginsDirectory"输出应指向
/Users/<username>/.sbt/1.0/plugins,说明配置生效。
内容的提问来源于stack exchange,提问作者ReyAhamed
相关产品推荐
相关产品推荐

