2015-12-13 2 views
9

Ein Spiel-Projekt hat ein "Projekt" Ordner wie folgt aus:SBT Verzeichnisstruktur. Was ist "Projekt"?

  • Projekt
    • Ziel
    • Projekt
      • Ziel

Ich dachte immer, das ist nur eines dieser Lebensgeheimnisse, über die ich nicht allzu viel nachdenken sollte, aber heute hat meine Neugierde das Beste von mir bekommen.

Googling gab mir this, die erwähnt, dass die oberste Ebene "Projekt" Ordner für sbt-Konfiguration ist. Ich frage mich, warum sie das nicht ".sbt" a la ".git" genannt haben und warum es außerhalb dieses Ordners noch eine Datei "build.sbt" gibt, aber ich nehme an, es macht keinen Spaß, die Dinge sinnvoll zu machen.

Es wird auch nicht erwähnt, warum es einen anderen Ordner "Projekt" darin enthält.

Warum gibt es einen verschachtelten "Projekt" -Ordner?

+0

Nicht spezifische Spiele, aber SBT – cchantep

+0

@cchantep danke, ich den Titel bearbeiten –

Antwort

6

http://www.scala-sbt.org/0.13/tutorial/Organizing-Build.html:

build.sbt verbirgt, wie sbt wirklich funktioniert. sbt-Builds werden mit Scala-Code definiert. Dieser Code selbst muss erstellt werden. Gibt es einen besseren Weg als mit SBT?

Das Projektverzeichnis ist ein weiterer Build in Ihrem Build, der weiß, wie Sie Ihren Build erstellen. Um die Builds zu unterscheiden, verwenden wir manchmal den Begriff "richtiger Build", um auf Ihr Build zu verweisen, und "Meta-Build", um auf das Build-Projekt zu verweisen. Die Projekte innerhalb des Metabuild können alles tun, was auch immer ein anderes Projekt tun kann. Ihre Build-Definition ist ein sbt-Projekt.

Und die Schildkröten gehen den ganzen Weg hinunter. Wenn Sie möchten, können Sie die Build-Definition des Builddefinitionsprojekts optimieren, indem Sie ein Projekt/Projekt/-Verzeichnis erstellen.

+1

die Seite tatsächlich gelesen haben soll ... ich an der Strukturgraph nur sah –

+1

auf das zu erarbeiten, sind Plugins für SBT typischerweise in dem projektierten metabuild, da sie verfügbar sein müssen, um Ihr aktuelles Projekt zu erstellen. Es ist nicht typisch, ein Meta-Metabuild zu haben ... aber Sie könnten. – acjay

+2

FTR, wir haben einen Meta-Meta-Build in https://github.com/scala-js/scala-js, der einen Quellengenerator enthält, der Quellen * für das Build-Projekt * generiert, dh für den Meta-Build . Also * ja *, du kannst! – sjrd

2

SBT ist rekursiv. Es definiert Build-Eigenschaften für Ihr Projekt mit Scala-Code. Wo scala code? Zu dem anderen Projekt innerhalb des aktuellen Projekts. Wenn die Projektdefinition selbst ein korrektes Projekt ist, kann sie mit einer anderen sbt-Konfiguration konfiguriert werden. Und so weiter. Scala-Typen mögen rekursive Strukturen.

Sie können scala-Compiler-Version, Scala-Compiler-Optionen für verschachtelte (in Meta-Sinn) Projekte ändern. Es kann wahrscheinlich die Art und Weise ändern, wie das Metaprojekt interpretiert wird und was das oberste Projekt beeinflussen kann.

+1

"Sie können die Scala-Compiler-Version ändern" Dies ist die eine Sache, die Sie nicht ändern sollten, da sie für Meta-Builds dieselbe Version sein muss, die SBT selbst verwendet. –