在 testOnly 之前重新编译 build.sbt 和 project/

Recompile build.sbt and project/ before testOnly

我的scala项目结构非常简单:

/someApp
  /scala
     /project
        Dependencies.scala
        ...
     /main
        ...
     /test
       MyTest.scala
  /target
     ...
  build.sbt

现在,让我们考虑一下:

sbt> testOnly *MyTest

它重新编译 MyTest.scala 并按照我的预期执行它。但是,当我对 build.sbtproject/Dependencies.scala 进行更改时,它会忽略这些更改。

有人可以向我解释并理解为什么会这样吗? sbt 似乎是一个巨大的谜...

要包含对项目文件夹下的 .sbt 文件或 .scala 文件所做的更改,您需要 运行 sbt [=] 中的 reload 命令19=].

您还可以强制 sbt 在每次检测到这些文件发生变化时重新加载,方法是将此行添加到您的 build.sbt:

Global / onChangedBuildSource := ReloadOnSourceChanges