IntelliJ中sbt项目添加Scalatest依赖遇模块未找到问题求助
解决sbt中找不到org.scalatest依赖的问题
你刚入门sbt就遇到了这个依赖报错的问题,别担心,咱们一步步来排查解决:
为什么会出现module not found: org.scalatest#scalatest_2.13;3.0.5?
最核心的原因是你的sbt版本(1.2.8)和Scala 2.13.0的兼容性不足。sbt 1.2.x系列是比较老的版本,对Scala 2.13的支持并不完善,在依赖自动匹配(就是你用的%%语法)时容易出现解析错误,导致找不到对应的scalatest包。
另外也有可能是默认Maven仓库访问慢或者出问题,导致依赖拉取不到,但这个概率相对低一些。
具体解决方案
方案1:升级sbt版本(最推荐)
把sbt升级到1.3.x及以上的稳定版本,比如1.3.13,这个版本对Scala 2.13的支持已经很成熟了:
- 找到项目根目录下的
project/build.properties文件,修改里面的sbt版本:sbt.version=1.3.13 - 回到IntelliJ,点击右侧sbt面板的「Reload All sbt Projects」,等重新加载完再编译试试。
方案2:手动指定依赖的Scala版本后缀
如果暂时不想升级sbt,那就绕过sbt的自动版本匹配,手动写死对应Scala 2.13的依赖名:
把build.sbt里的依赖行改成:
libraryDependencies += "org.scalatest" % "scalatest_2.13" % "3.0.5" % Test
这里把%%换成%,然后手动加上_2.13的后缀,直接指定要拉取的包版本。
方案3:添加国内镜像仓库加速解析
要是上面两种方法都不管用,可能是默认的Maven中央仓库访问有问题,你可以在build.sbt里加个国内镜像:
resolvers += "Aliyun Maven" at "https://maven.aliyun.com/repository/public"
加完后重新加载sbt项目,再尝试编译。
关于IntelliJ的疑问
完全不用担心IntelliJ不适合做Scala sbt项目,它是目前Scala开发最常用的IDE之一。只要你的Scala插件版本是最新的(可以在IntelliJ的「设置→插件→Scala」里检查更新),配合合适的sbt和Scala版本,用起来非常顺畅。
另外建议你尽量用IntelliJ右侧sbt面板里的compile、test命令来执行构建,而不是只依赖IDE的自动编译,这样能更准确地反映sbt本身的构建状态。
内容的提问来源于stack exchange,提问作者Phoen




