我使用的是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/...
个文件夹,如何做到这一点?
答案 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
并在任何项目中使用。