Ответ на qaru.site/info/558184/... показывает, как переопределить один параметр для подпроекта, определенного с помощью RootProject
из основного проекта. Мне было интересно, есть ли хороший способ сделать это для нескольких настроек, а затем, возможно, для нескольких подпроектов, так что вам не нужно перечислять каждую комбинацию отдельно. Это будет предотвращать распространение и уменьшать вероятность забыть о комбинации и случайно иметь несоответствие настроек.
Если не использовать RootProject
, SBT docs показывает, как это сделать с общей последовательностью настроек:
lazy val commonSettings = Seq(
organization := "com.example",
version := "0.1.0",
scalaVersion := "2.11.8"
)
lazy val core = (project in file("core")).
settings(commonSettings: _*).
settings(
// other settings
)
lazy val util = (project in file("util")).
settings(commonSettings: _*).
settings(
// other settings
)
Но a RootProject
не имеет способа установить свои настройки. Я попробовал что-то вроде следующего, в соответствии с ответом, упомянутым выше:
lazy val util = RootProject(file("../util"))
commonSettings.map(_.key).foreach(key => key in util := key.value)
но это не похоже на правильный подход.
Я рассмотрел использование области Global
или ThisBuild
, но каждый подпроект устанавливает параметры в свой собственный файл build.sbt
, который имеет приоритет над этими более широкими областями, если я правильно понимаю.
Есть ли хороший способ сделать это, или я должен просто задать каждую настройку для каждого подпроекта вручную? Должен ли я использовать разные области применения, например. подпроекты определяют свои настройки в Global
и основной проект в ThisBuild
?