首页 > 解决方案 > 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/...文件夹,如何做到这一点?

标签: scalasbt

解决方案


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并在任何项目中使用。


推荐阅读