如何配置sbt避免dependencyTree命令输出被截断?
你在sbt 1.8.0里执行sbt dependencyTree时遇到了输出截断的情况,示例片段如下:
[info] | | | | | | +-com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:2.12...
[info] | | | | | | +-com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:2.14.0
[info] | | | | | | | +-com.fasterxml.jackson.core:jackson-core:2.14.0 (evicted by: ..
[info] | | | | | | | +-com.fasterxml.jackson.core:jackson-core:2.14.1
[info] | | | | | | | +-com.fasterxml.jackson.core:jackson-databind:2.14.0 (evicted ..
[info] | | | | | | | +-com.fasterxml.jackson.core:jackson-databind:2.14.1
[info] | | | | | | | +-com.fasterxml.jackson.core:jackson-annotations:2.14.1
[info] | | | | | | | +-com.fasterxml.jackson.core:jackson-core:2.14.1
这种截断会导致snyk cli读取时产生误报,以下是几种可行的配置解决方法:
方法1:调整sbt日志输出宽度
可以在项目的build.sbt或者全局配置文件~/.sbt/1.0/global.sbt中添加以下配置,设置足够大的输出宽度:
logWidth := 200 // 可根据实际需求调整数值,比如设为300
或者在执行命令时直接通过参数指定:
sbt -Dsbt.log.width=200 dependencyTree
方法2:使用dependencyTree的完整输出模式
sbt的dependencyTree插件支持full模式,会强制输出完整内容,避免截断。执行命令时加上这个参数即可:
sbt dependencyTree:full
方法3:将依赖树导出到文件
如果控制台输出仍有问题,可以直接把依赖树输出到文件,文件里的内容不会被截断:
sbt dependencyTree > dependency-tree.txt
之后让snyk cli读取这个文件即可。
内容的提问来源于stack exchange,提问作者Lesiak

