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

时间:2018-05-01 23:04:59

标签: scala 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/...个文件夹,如何做到这一点?

1 个答案:

答案 0 :(得分:2)

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

相关问题