我正在使用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
,而是将其标记为test resources root
我可以手动更改它,但是项目的每次重新导入都会再次对其进行标记。
经过一番挖掘,我发现从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
答案 0 :(得分:1)
每个具有.configs(IntegrationTest)
的模块也都需要在其设置中包含Defaults.itSettings,以使想法正确地映射资源文件夹。
在给出的示例中,它变为
lazy val `module_one` = project
.in(file("module_one"))
.settings(
coreSettings, Defaults.itSettings
)
.configs(IntegrationTest)