2014-12-15 9 views

Antwort

1

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?

6

Der Ordner project sollte keine build.sbt, nur plugins.sbt und .scala Dateien enthalten. Die Scala-Dateien werden normalerweise verwendet, um ein gemeinsames Objekt mit Werten zu erstellen, die in mehreren Builds in Ihrem Projekt verwendet werden. Ich erstelle normalerweise auch eine dev.sbt, die Plugins enthält, die ich für die Entwicklung verwende, und diese Datei bleibt außerhalb der Versionskontrolle.

+0

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. –

+0

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. –

+0

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. –

Verwandte Themen