Используйте общие настройки в 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
?