如何为sbt中的scalac设置SCALACTIC_FILL_FILE_PATHNAMES=yes(或其他环境变量)



我想在ScalaTest报告程序中使用完整路径。值LineInFile.filePathname告诉我应该:

请在编译时将环境变量SCALACTIC_FILL_FILE_PATHNAMES设置为yes以启用此功能。

我可以在sbt中执行此操作吗?还是必须在不同的环境中启动sbt?Scalac似乎和sbt在同一个JVM中运行,Scala有一个问题:无法设置环境变量,告诉我不能修改自己的环境。

我尝试过以下操作,它们似乎都没有为编译器设置变量:

scalacOptions ++= Seq(
"-deprecation", "-unchecked",
"-DSCALACTIC_FILL_FILE_PATHNAMES=yes"
),
Compile / envVars := Map("SCALACTIC_FILL_FILE_PATHNAMES" -> "yes"),
Test / envVars := Map("SCALACTIC_FILL_FILE_PATHNAMES" -> "yes"),

据我所知,sbt不会在单独的进程中运行scalac(这将允许它设置环境变量(,因此您必须在具有该集的环境中运行sbt。

请注意,-D设置Java属性。虽然软件允许类似地处理环境变量和属性(例如Lightbend Config(是很常见的,但这不是标准的。

设置环境的机制将取决于您如何启动sbt。如果使用Bourne风格的类似shell的bash:

export SCALACTIC_FILL_FILE_PATHNAMES=yes
sbt

SCALACTIC_FILL_FILE_PATHNAMES=yes sbt

IDE和CI/CD工具可以直接启动sbt,在这种情况下,请查看这些工具的文档。

最新更新