已用Slash语法仍触发sbt 0.13 Shell语法弃用警告求排查
问题排查与修复建议
关于sbt 0.13语法警告的来源
你收到的警告[warn] sbt 0.13 shell syntax is deprecated; use slash syntax instead: Test / package,大概率不是来自你的build.sbt文件,而是你在sbt交互Shell中输入了旧语法的命令(比如test:package)。sbt要求你改用新的Slash语法格式Test / package来执行该命令,而非配置文件本身存在问题。
你的build.sbt存在的问题
Slash语法格式不规范
run/connectInput := true应该写成run / connectInput := true(任务名和配置项之间加空格)。虽然sbt暂时兼容无空格的写法,但严格遵循新语法规范能避免潜在问题。严重的重复赋值错误
多个源目录配置被重复赋值,导致前面的配置完全被覆盖,这会让你预期的源目录不生效:Compile / scalaSource被赋值两次,最终只有src/scalar会作为编译源目录,src/main会被忽略。如果想同时包含两个目录,应该修改为添加到unmanagedSourceDirectories(这是用于配置多源目录的正确项):Compile / unmanagedSourceDirectories += baseDirectory.value/"src"/"main" Compile / unmanagedSourceDirectories += baseDirectory.value/"src"/"scalar"Test / scalaSource被三次赋值,最终仅src/sim生效,src/test和src/plot都不会被当作测试源目录。同样需要改为添加到unmanagedSourceDirectories:Test / unmanagedSourceDirectories += baseDirectory.value/"src"/"test" Test / unmanagedSourceDirectories += baseDirectory.value/"src"/"plot" Test / unmanagedSourceDirectories += baseDirectory.value/"src"/"sim"Compile / javaSource和Test / javaSource如果需要配置多个Java源目录,也应该用unmanagedSourceDirectories来添加,而非直接赋值覆盖。
版本兼容性建议
针对你使用的Scala 3.3.0,可以将scala-parallel-collections的版本升级到1.0.4或更高,以获得更好的兼容性和修复。
内容的提问来源于stack exchange,提问作者Russ P.
相关产品推荐
相关产品推荐

