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/...
文件夹,如何做到这一点?
解决方案
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
并在任何项目中使用。
推荐阅读
- powershell - 停止远程使用文件的进程
- c# - 如何在从网络摄像头获取的 c# Emgu cv 帧中创建服务器 RTSP?
- jquery - 如何反转滚动运动?
- c# - 如何只用剃刀返回 html 正文的内容?
- java - 是否可以向 ClassPathXmlApplicationContext 添加相对路径?
- powershell - 带有 MSOnline 模块的任务计划程序脚本
- ios - Ionic 4 - 当我在 iOS 中运行应用程序时,Api 调用不起作用
- ruby-on-rails - Order multiple images by filename in Active storage Rails 5.2
- typescript - NestJS 5 GraphQL 错误查询在解析器中定义,但不在模式中
- c - 创建临时目录的可靠方法