我有一个项目,其中子项目作为子目录的git子模块添加到了子目录中,每个独立项目都有自己的build.sbt
文件。根项目依赖并聚合这些子项目。如何在这些子项目中覆盖设置值(例如organization
或version
)?
lazy val p1 = (project in file("p1"))
.settings(organization := "xyz.abc") // This does not work :(
lazy val root = (project in file("."))
.dependsOn(p1)
.aggregate(p1)
答案 0 :(得分:1)
尝试在onLoad
中放置状态替代
类型为State => State
的,并且在所有项目 构建并加载。
例如,
lazy val settingsAlreadyOverriden = SettingKey[Boolean]("settingsAlreadyOverriden","Has overrideSettings command already run?")
settingsAlreadyOverriden := false
commands += Command.command("overrideSettings") { state =>
if (settingsAlreadyOverriden.value) {
state
} else {
Project.extract(state).appendWithSession(
Seq(
settingsAlreadyOverriden := true,
subprojectA / organization := "kerfuffle.org",
),
state
)
}
}
onLoad in Global := {
((s: State) => { "overrideSettings" :: s }) compose (onLoad in Global).value
}
settingsAlreadyOverriden
对于Avoiding recursive onLoad
execution #3544是必需的
相关问题