SBT 子项目源文件夹不是自动创建的?



我正在使用 sbt 版本 1.1.4。 我让我的子项目像这样构建:

val testDeps = Seq(
"org.scalactic" %% "scalactic" % "3.0.5",
"org.scalatest" %% "scalatest" % "3.0.5" % "test"
)
libraryDependencies ++= testDeps
lazy val root = project.in(file("."))
.aggregate(
common,
analytics,
website
)
lazy val common = project.in(file("common"))
.settings(
libraryDependencies ++= testDeps
)
lazy val analytics = project.in(file("analytics"))
.dependsOn(common)
.settings()
lazy val website = project.in(file("website"))
.dependsOn(common)
.settings()

我无法让 sbt 自动生成src/scala/...文件夹,如何做到这一点?

sbt 不会自动创建源文件夹。如果你想这样做,你可以为它写一个小任务:

lazy val createSourceDirs = taskKey[Unit]("Creates source directories for all subprojects")
Global / createSourceDirs := {
val log = streams.value.log
val srcDirs = sourceDirectory.all(ScopeFilter(inAnyProject)).value
srcDirs.foreach { src =>
val dir = src / "main" / "scala"
if (dir.exists) log.info(s"Skipping existing ${dir}")
else {
IO.createDirectory(dir)
log.info(s"Created ${dir}")
}
}
}

我不确定这是否非常有用,但事实是,你可以做到。如果您经常需要它,请将其添加到您的~/.sbt/1.0/global.sbt并在任何项目中使用。

最新更新