这是一个常见的“最佳实践”。我还没有看到有人明确说明这一点,但从我的经验来看,这种做法与sbt的一些特征有关。
- SBT解析任何
*.sbt
文件
- SBT计算一个
*.sbt
文件从上到下
- 你可以在多个SBT文件
现在想象一下你想构建你的一切之间产生依赖性为了便于阅读,请使用build.sbt
。我们有一些共同的设置和3个项目(一个根和两个版本)
val root = project.in(file("."))
.settings(commonSettings)
.aggregate(api, server)
val api = project.in(file("api"))
.settings(commonSettings)
.settings(name := "server")
val server= project.in(file("api"))
.settings(commonSettings)
.settings(name := "api")
.dependsOn(api)
val commonSettings = Seq(organization := "com.example")
SBT将无法启动多重的东西是错误的在这build.sbt
- 的
api
和server
模块的引用它们被定义
commonSettings
之前root
项目在所有项目的定义前引用
没有做任何事情lazy
它很难重构你的构建文件。这是所有sbt文档每次都使用lazy val
的原因。为了避免第一次使用者感到困惑和沮丧。
希望有帮助, Muki