Odpowiedź na https://stackoverflow.com/a/21605652/1737727 pokazuje, jak zastąpić jedno ustawienie dla podprojektu zdefiniowanego za pomocą RootProject
z głównego projektu. Zastanawiam się, czy jest to dobry sposób na zrobienie tego dla wielu ustawień, a następnie ewentualnie dla wielu podprojektów, więc nie musisz wymieniać każdej kombinacji osobno. Byłoby to zapobieganie proliferacji i zmniejszanie szansy na zapomnienie kombinacji i przypadkowe niedopasowanie ustawień.Użyj wspólnych ustawień w SBT `RootProject`
Gdy nie jest używany RootProject
The SBT docs pokazać, jak to zrobić z wspólnej sekwencji ustawień:
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
)
Ale RootProject
ma metodę ustalania jego ustawienia. Próbowałem czegoś takiego, zgodnie z odpowiedzią wymienioną powyżej:
lazy val util = RootProject(file("../util"))
commonSettings.map(_.key).foreach(key => key in util := key.value)
, ale wydaje się, że nie jest to właściwe podejście.
Przyjrzałem się zakresowi Global
lub ThisBuild
, ale każdy podprojekt ustawia ustawienia we własnym pliku build.sbt
, który ma pierwszeństwo przed tymi szerszymi zakresami, jeśli dobrze rozumiem.
Czy jest to dobry sposób, czy powinienem ręcznie ustawić każde ustawienie dla każdego podprojektu? Czy mogę używać różnych zakresów, np. podprojekty definiują ich ustawienia w Global
i główny projekt w ThisBuild
?
To rzeczywiście działa, wielkie dzięki! Używam 'RootProject', ponieważ projekt podrzędny znajduje się w katalogu rodzica głównego projektu (jest współdzielony przez wiele projektów) i nie można wykonać' projektu w pliku ("../ util") '. Byłoby wspaniale się uczyć o lepszej drodze, choć może nie w pełni na temat tego pytania. – sgvd
jeśli 'util' nie potrzebuje własnej kompilacji, możesz dodać ją bezpośrednio do' unmanagedSourceDirectories'. –