Почему я не могу переопределить настройки в подпроекте SBT, если он определяет значение Project?

63
7

У меня есть подпроект, который определяет root следующим образом:

lazy val root = (project in file(".")).enablePlugins(PlayScala)

и не определяет никаких других настроек.

В моем основном проекте я ссылаюсь на это следующим образом:

lazy val mylib = (project in file("mylib"))
lazy val myapp = (project in file("myapp")).dependsOn(mylib)

Проблема заключается в том, что, ссылаясь на этот способ, mylib построен с Scala 2.10, потому что он не указывает scalaVersion а 2.10 является стандартом SBT.

Если я попытаюсь переопределить любые настройки, например:

lazy val mylib = (project in file("mylib")).settings(Seq(scalaVersion := "2.11.8"))

они игнорируются.

Однако, если я удалю lazy val root =... из подпроекта build.sbt параметры, переданные из основного файла сборки, работают build.sbt образом. Это нарушает автономную сборку подпроекта, однако, поскольку плагин PlayScala должен быть включен в основной файл.

Итак, как я могу ссылаться на такой проект и переопределять некоторые настройки?

Я могу обойти это, изменив настройки в глобальном масштабе (например, scalaVersion in ThisBuild), но я бы хотел, чтобы в этом случае можно было переопределить другие вещи, такие как id проекта, который в этом случае фиксирован как root.

спросил(а) 2021-01-25T21:32:00+03:00 4 месяца, 4 недели назад
1
Решение
88

Обычно я переопределяю такие настройки, и он отлично работает.

lazy val mylib = (project in file("mylib")).settings(
scalaVersion := "2.11.8"
//any other settings, I want to override, separated by comma
propertyA := "A",
propertyB := "C"
)

Разница в том, что у меня обычно есть зависимости в приложении Play, но все указано в одной команде build.sbt

ответил(а) 2021-01-25T21:32:00+03:00 4 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема