升级SBT至1.3.x后resolved.xml.xml不再生成,求内置替代方案
替代SBT 1.3.x中消失的
resolved.xml的内置方案 嘿,这个问题我刚好清楚!升级到SBT 1.3.x后看不到resolved.xml是因为SBT默认把依赖解析引擎从Ivy换成了Coursier,原来Ivy生成的这个文件自然就不再产出了。不过不用折腾外部插件,咱们有几个内置的办法能拿到等效的依赖信息,满足你重建项目结构和依赖树的需求:
1. 直接查看Coursier的解析缓存文件
Coursier会把依赖解析的元数据存在两个地方:
- 项目本地缓存:在项目根目录的
target/resolution-cache/coursier文件夹下,这里存着当前项目专属的解析结果,每个依赖的详细元数据(比如POM文件、依赖链)都能在对应的子目录里找到,只是不是像resolved.xml那样的单一汇总文件。 - 全局用户缓存:Linux/macOS下是
~/.cache/coursier/v1,Windows下是%USERPROFILE%\.cache\coursier\v1。这里是所有项目共享的依赖缓存,比如Maven中央仓库的依赖会存在https/repo1.maven.org/maven2路径下,每个依赖的完整依赖关系都能在对应的文件夹里找到。
2. 生成依赖树文本文件(无需插件)
如果你想要汇总的依赖树,可以用SBT内置命令把输出导到文件里:
sbt "show dependencyClasspath" > dependency-classpath.txt
这个命令会列出所有依赖(包括传递依赖)的路径和基本信息。要是想要更直观的树形结构,还能直接用SBT集成的Coursier命令:
sbt "coursier resolve 你的项目坐标 --tree" > dependency-tree.txt
记得把「你的项目坐标」换成你项目的实际坐标格式,比如com.example:my-app_2.13:1.0.0。
3. 查看SBT的更新报告
每次执行sbt update后,SBT会在target/scala-<你的Scala版本>/目录下生成一个update-report文件。这个文件里包含了所有依赖的解析状态、版本选择的原因以及依赖来源,虽然格式不是XML,但足够帮你还原项目的依赖结构。
这些都是SBT和Coursier原生支持的功能,完全不需要装额外插件,应该能解决你的问题。
内容的提问来源于stack exchange,提问作者eRez
相关产品推荐
相关产品推荐

