ScalaTest 需要使用多项目 sbt 进行设置

ScalaTest needed settings with multi-project sbt

我也无法 运行 测试,因为它们中的任何一个都被检测到,当编译器抱怨时,这是在向我解释我无法从 /core/src/main 中导入 类 in /core/src/test 当我在核心项目中交互 运行ning sbt 时。

这是我使用的基本配置。

文件夹组织

|
| build.sbt
|
|-------------- core | src ------------| main | scala | files...
|                    | build.sbt       | test | scala | files...
|
|-------------- proj1 | src ----------- | main | scala | files...
|                     | build.sbt       | test | scala | files...

这里是build.sbt

的一些和平

lazy val deps = Seq(
    "org.scalactic" %% "scalactic" % "3.1.2",
    "org.scalatest" %% "scalatest" % "3.1.2" % "test"
)

lazy val coreDeps = libraryDependencies ++= deps


lazy val core = (project in file("core"))
   .settings(coreDeps)

lazy val proj1 = (project in file("proj1"))
  .settings(coreDeps)
  .dependsOn(core)

您只需按照评论中的说明进行操作:使用 settings 方法应用设置:

lazy val core = (project in file("core"))
  .settings(
    libraryDependencies ++= Seq(
      "org.scalactic" %% "scalactic" % "3.1.2",
      "org.scalatest" %% "scalatest" % "3.1.2" % "test"
    )
  )

lazy val proj1 = (project in file("proj1"))
  .settings(
    libraryDependencies ++= Seq(
      "org.scalactic" %% "scalactic" % "3.1.2",
      "org.scalatest" %% "scalatest" % "3.1.2" % "test"
    )
  )

或者,您可以将 libraryDependencies 键的范围限定为 ThisBuild。然后会在所有的子项目中继承:

ThisBuild / libraryDependencies ++= Seq(
  "org.scalactic" %% "scalactic" % "3.1.2",
  "org.scalatest" %% "scalatest" % "3.1.2" % "test"
)

lazy val core = (project in file("core"))
lazy val proj1 = (project in file("proj1"))

问题来自 build.sbt 个位于 coreproj1 下的文件,一旦我删除它们,一切都按预期工作。