Scala sbt项目:查看测试依赖及子模块依赖树缺失问题排查
Scala sbt项目测试依赖查看及依赖树问题解决
1. 如何查看Scala sbt项目中的测试依赖
默认sbt dependencyTree仅展示Compile配置的依赖,查看测试依赖需指定对应的配置维度,常用命令如下:
- 查看单元测试(
Test配置)的依赖树:sbt 'project [项目/子模块名]' test:dependencyTree - 查看集成测试(
IntegrationTest配置)的依赖树:sbt 'project [项目/子模块名]' integrationTest:dependencyTree - 查看所有配置维度的完整依赖:
sbt 'project [项目/子模块名]' dependencyTree -V
2. 让IntegrationTest依赖显示在依赖树中并解决IntelliJ版本报错问题
显示IntegrationTest依赖的方法
你遇到的问题是因为默认dependencyTree仅加载Compile配置的依赖,而test-utils-lib属于IntegrationTest配置,需指定配置执行命令:
sbt 'project sub-module' integrationTest:dependencyTree
执行后就能看到test-utils-lib的依赖信息,包括是否有隐式引用的1.0.4旧版本。
解决IntelliJ找不到1.0.4版本的问题
- 刷新sbt项目:在IntelliJ的sbt工具窗口点击刷新按钮(🔄),让IDE重新读取build.sbt配置。
- 清理IDE缓存:通过
File -> Invalidate Caches...选择"Invalidate and Restart",清除本地缓存中残留的旧版本依赖信息。 - 排查传递依赖:用上述
integrationTest:dependencyTree命令检查是否有其他依赖间接引入1.0.4版本的test-utils-lib,若存在,可在build.sbt中添加依赖排除或强制指定版本:// 排除传递依赖的旧版本 "com.my.project" %% "test-utils-lib" % "1.0.5" % IntegrationTest classifier "tests" exclude ("com.my.project", "test-utils-lib") // 强制指定版本 dependencyOverrides += "com.my.project" %% "test-utils-lib" % "1.0.5" % IntegrationTest classifier "tests" - 清理sbt本地缓存:删除本地sbt缓存目录(默认在
~/.ivy2/cache或~/.cache/coursier),执行sbt update重新拉取最新依赖。
内容的提问来源于stack exchange,提问作者Shane Gannon
相关产品推荐
相关产品推荐

