sbt引入Grizzled插件失败:无法识别库且eval命令报错求助
问题:sbt构建定义中引入grizzled-scala库后无法正常使用
按照sbt官方插件教程操作,在project/plugins.sbt文件中,因原依赖语句libraryDependencies += "org.clapper" %% "grizzled-scala" % "1.0.4"存在Scala版本不匹配问题,我将其修改为libraryDependencies += "org.clapper" % "grizzled-scala_2.8.1" % "1.0.4"。启动sbt时看似已拉取正确库,但执行sbt plugins未显示Grizzled相关内容,运行sbt > eval grizzled.sys.os时出现报错(无法解析符号grizzled)。宿主项目使用Scala 2.13最新版本,请问遗漏了什么?
问题解决
1. 依赖放错了文件
project/plugins.sbt是用来声明sbt插件的,不是给构建定义本身添加依赖的位置。构建定义需要的库应该放在project/build.sbt或者project目录下的.scala文件里。
2. Scala版本选择完全错误
你选的grizzled-scala_2.8.1是适配Scala 2.8.1的古董版本,和宿主项目的Scala 2.13完全不兼容。而且grizzled-scala早就有支持高版本Scala的发布包,无需硬写旧版本号:
- 正确的依赖声明应该用
%%让sbt自动匹配构建定义使用的Scala版本(注意:sbt 1.x系列自带的Scala版本是2.12,不是宿主项目的2.13),写法如下:
libraryDependencies += "org.clapper" %% "grizzled-scala" % "4.1.0"
这个版本同时支持Scala 2.12和2.13,能适配sbt的构建环境。
3. 正确操作步骤
- 删除
project/plugins.sbt里的grizzled依赖语句 - 在
project目录下新建或编辑build.sbt,写入上述正确的依赖声明 - 重启sbt,之后执行
eval grizzled.sys.os即可正常解析 - 补充:
sbt plugins命令仅显示sbt插件,构建定义的库不会出现在这个列表中,属于正常现象
内容的提问来源于stack exchange,提问作者user2167582
相关产品推荐
相关产品推荐

