IDEA 中的模块资源根:scala multi module projet

Modules resources root in IDEA : scala multi module projet

我正在 scala 中处理多模块 IDEA 项目。

该项目包含 16 个模块。

所有这些模块都基于相同的通用 sbt 配置:

  resourceDirectory in Compile := baseDirectory.value / "src" / "main" / "resources",
  resourceDirectory in Test := baseDirectory.value / "src" / "test" / "resources",
  resourceDirectory in IntegrationTest := baseDirectory.value / "src" / "it" / "resources",

我的问题是,在将项目与 IDEA 同步时,16 个模块中的 2 个始终无法将其 src/main/resources 文件夹标记为 resources root,而是将其标记为 [=13] =]

我可以手动更改它,但每次重新导入项目都会重新标记它们。

在深入研究 sbt 之后,我发现从 sbt 的角度来看:

谢谢!

最小 build.sbt 会出现问题:

import sbt.Keys.resourceDirectory


lazy val coreSettings = Seq(
  organization := "C4stor",
  scalaVersion := "2.12.6",
  resourceDirectory in Compile := baseDirectory.value / "src" / "main" / "resources",
  resourceDirectory in Test := baseDirectory.value / "src" / "test" / "resources",
  resourceDirectory in IntegrationTest := baseDirectory.value / "src" / "it" / "resources"
)

lazy val `module_one` = project
  .in(file("module_one"))
  .settings(
    coreSettings
  )
  .configs(IntegrationTest)

如果您在 module_one 目录中创建实际的 src/main/resources 和 src/test/resources 文件夹,IDEA 将错误地标记 src/main/resources

每个具有 .configs(IntegrationTest) 的模块还需要在其设置中具有 Defaults.itSettings 以便 idea 正确映射资源文件夹。

在给出的示例中,它变为

lazy val `module_one` = project
  .in(file("module_one"))
  .settings(
    coreSettings, Defaults.itSettings
  )
  .configs(IntegrationTest)