Da ist fast keinen Unterschied zwischen build.sbt
und project/build.sbt
- sie beide build.sbt
schließlich sind, aber ihre Lage macht einen Unterschied, wie und in welchem Teil des Projekts bauen sie zu konfigurieren.
Zitiert sbt is recursive:
Das project
Verzeichnis ist ein weiteres Projekt in Ihrem Projekt die weiß, wie Ihr Projekt zu erstellen. Das Projekt innerhalb project
kann (in Theorie) alles tun, was jedes andere Projekt tun kann. Ihre Builddefinition ist ein sbt-Projekt.
Und die Schildkröten gehen den ganzen Weg hinunter. Wenn Sie möchten, können Sie die Builddefinition des Builddefinitionsprojekts optimieren, indem Sie ein Verzeichnis erstellen.
Es gibt zwei direkte Wege einen Build für Ihr Projekt mit sbt einzurichten - mit .sbt
Dateien im Hauptverzeichnis des Projektes und project/*.scala
Dateien. Alle diese Dateien bilden den Build.
Es gibt jedoch eine Möglichkeit, einen Build für den Build einzurichten haben Sie gerade konfiguriert und gelten die gleichen Regeln - Sie (Anmerkung project
Verzeichnis vor den Stellen) project/*.sbt
und project/project/*.scala
Dateien verwenden können.
And the turtles go all the way down.
Ihres Projekts Build So erweitern Sie sbt Plugins verwenden möchten - zusammen eine Build-Konfiguration gebündelt seine Installation zu erleichtern. Sie sind ein Teil des Builds des Builds Ihres Projekts (der Build wurde mit Absicht verdoppelt). Per Konvention sind die Plugins in installiert, aber alle.sbt
Datei unter project
Verzeichnis wäre in Ordnung.
Um die Geschichte kurz machen, wenn Sie ein Schlüssel in der Builddefinition einstellen wollen, sollten Sie .sbt
oder project/*.scala
Dateien auf der Ebene verwenden, die die Builddefinition entsprechen würde. Wenn das die Top-Level- Build-Definition Ihres Projekts ist, gehen Sie für build.sbt
im Stammverzeichnis.
Denken Sie daran, dass jede Build-Definition unter project
ein Teil der Build-Definition Ihres Projekts wird. [Und die Schildkröten gehen den ganzen Weg hinunter] [3], erinnerst du dich?
Warum platzieren Sie 'dev.sbt' nicht unter' ~/.sbt/0.13'? Es wird dir viel Zeit sparen, die dev sbt config für andere Projekte in Zukunft einzurichten. –
Nicht jedes Projekt sollte diese Plugins laden, und nicht jedes Projekt ist mit jeder Plugin-Version kompatibel. Globale Plugin-Einstellungen machen die Sache nur kompliziert. –
Gültiger Punkt. Das ist, was ich denke, ist genau der Grund für autoplugins = also ein Endbenutzer muss nicht über Plugin-Abhängigkeiten wissen. –