Используйте общие настройки в SBT `RootProject`

Ответ наhttps://stackoverflow.com/a/21605652/1737727 показывает, как переопределить один параметр для подпроекта, определенного с помощьюRootProject из основного проекта. Мне было интересно, есть ли хороший способ сделать это для нескольких настроек, а затем, возможно, и для нескольких подпроектов, чтобы вам не приходилось перечислять каждую комбинацию отдельно. Это будет предотвращать распространение и уменьшать вероятность забывания комбинации и случайного несоответствия настроек.

Когда не используетсяRootProject,SBT документы покажите, как это сделать с помощью общей последовательности настроек:

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
  )

НоRootProject не имеет метода для установки своих настроек. Я попробовал что-то вроде следующего, согласно ответу, упомянутому выше:

lazy val util = RootProject(file("../util"))
commonSettings.map(_.key).foreach(key => key in util := key.value)

но это не похоже на правильный подход.

Я смотрел на использованиеGlobal или жеThisBuild область действия, но каждый подпроект устанавливает параметры в своем собственномbuild.sbt файл, который имеет приоритет над этими более широкими областями, если я правильно понимаю.

Есть хороший способ сделать это, или я должен просто установить каждый параметр для каждого подпроекта вручную? Должен ли я использовать разные области, например подпроекты определяют свои настройки вGlobal и основной проект вThisBuild?

Ответы на вопрос(1)

Ваш ответ на вопрос