Как переопределить настройку/задачу подпроекта в проекте SBT с несколькими сборками? Например, здесь две очень простые проекты SBT:SBT: настройка переопределения в проекте multi-build dependOn/aggregate
~/проекты/бэкенд/build.sbt
name := "backend"
// old version of scala
scalaVersion := "2.9.1"
~/mycode/docker_builder/build.sbt
lazy val backend = RootProject(file("~/projects/backend"))
lazy val root = (project in file(".")).
settings(
// Doesn't work because sub-project already defines name
name in backend := "sub-overriden",
// Doesn't override {backend/}backend/*:scalaVersion since backend already defines scalaVersion in Global config
scalaVersion in backend := "2.10.1",
// Does define new setting in sub-project: {backend/}backend/test:scalaVersion (because backend did not define scalaVersion in test config)
scalaVersion in (backend, Test) := "2.10.2"
).
aggregate(sub1)
// dependsOn(sub1)
В приведенном выше примере я пытаюсь переопределить как имя, так и scalaVersion, но, как указано в comme nts, корневой проект не может переопределить любые параметры/задачи, явно определенные явно в проекте backend. Теперь я предполагаю, что это ожидаемое поведение, так как RootProject и его родительский ProjectReference указывают на совершенно другую SBT-сборку, но если это так, почему мы разрешаем вводить новые настройки в сборку, например : scalaVersion in (backend, Test)?
Любые обходные решения или другие решения?
Образец бэкэнд-проекта, приведенный выше, является грубым упрощением - наш фактический базовый проект в нашей команде основан на многопроектном формате с примерно дюжиной или двумя подпроектами и sbt-плагинами - однако, к счастью, я «Я могу воспроизвести проблему с листингом выше.
Похожие:
How to define build-scoped settings in multi-project .sbt builds?
Setting javac options for SBT dependencies
Use common settings in SBT `RootProject`