我正在使用 SBT 实现 monorepo。我想迭代我的子项目以初始化它们(因为它们具有相同的配置)并防止代码重复。
在我的build.sbt:
lazy val root = (project in file("."))
.aggregate(projects: _*)
.settings(
crossScalaVersions := Nil,
publish / skip := true
)
lazy val projects = Seq("projectA", "projectB", "projectC")
.map((projectName: String) => (project in file(projectName))
.settings(
name := projectName,
commonSettings,
libraryDependencies ++= ModulesDependencies.get(projectName))
.project
)
Run Code Online (Sandbox Code Playgroud)
我收到错误:
error: project must be directly assigned to a val, such as `val x = project`. Alternatively, you can use `sbt.Project.apply`
Run Code Online (Sandbox Code Playgroud)
根据错误消息,我也尝试使用sbt.Project.apply(projectName, file(projectName)).settings(...),但我也面临一些有趣的错误。
据我了解,SBT 似乎希望我声明为lazy val projectA = …