Die Antwort unter https://stackoverflow.com/a/21605652/1737727 zeigt, wie eine Einstellung für ein mit dem Projekt RootProject
definiertes Unterprojekt überschrieben wird. Ich habe mich gefragt, ob es eine gute Möglichkeit gibt, dies für mehrere Einstellungen zu tun, und möglicherweise auch für mehrere Unterprojekte, so dass Sie nicht jede Kombination einzeln auflisten müssen. Dies würde die Verbreitung verhindern und die Wahrscheinlichkeit verringern, dass eine Kombination vergessen wird und versehentlich Einstellungen fehlen.Verwenden Sie allgemeine Einstellungen in SBT `RootProject`
Wenn nicht RootProject
verwenden, zeigen die SBT docs, wie diese Einstellungen mit einer gemeinsamen Sequenz zu tun:
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
)
Aber ein RootProject
hat keine Methode seine Einstellungen zu setzen. Ich habe versucht, etwas wie folgt, nach der oben genannten Antwort:
lazy val util = RootProject(file("../util"))
commonSettings.map(_.key).foreach(key => key in util := key.value)
aber das scheint nicht der richtige Ansatz zu sein.
Ich habe in mit Global
oder ThisBuild
Umfang gesucht, aber jedes Teilprojekt setzt die Einstellungen in eigener build.sbt
-Datei, den Vorrang vor diesen breiteren Bereichen nimmt, wenn ich das richtig verstehen.
Gibt es eine gute Möglichkeit dies zu tun, oder sollte ich einfach jede Einstellung für jedes Teilprojekt manuell vornehmen? Sollte ich verschiedene Bereiche verwenden, z. die Teilprojekte definieren ihre Einstellungen in Global
und das Hauptprojekt in ThisBuild
?
Das funktioniert tatsächlich, vielen Dank! Ich benutze 'RootProject', weil das Unterprojekt sich in einem Geschwisterverzeichnis des Hauptprojekts befindet (es wird von mehreren Projekten geteilt) und Sie können nicht 'Projekt in Datei (" ../ util ")' machen. Es wäre großartig, etwas über einen besseren Weg zu lernen, wenn auch vielleicht nicht ganz zum Thema für diese Frage. – sgvd
Wenn 'util' kein eigenes Build benötigt, können Sie direkt zu' unmanagedSourceDirectories' hinzufügen. –