2013-10-19 1 views
19

Ich habe versucht, mehr Informationen zu RootProject und ProjectRef zu finden, aber sieht aus wie es überhaupt nicht in der sbt-Dokumentation erwähnt wird.RootProject und ProjectRef

Ich verstehe, dass wenn Sie auf ein Stammprojekt verweisen, sollten Sie RootProject und ProjectRef verwenden, wenn Sie ein Unterprojekt verweisen. Es ist jedoch nicht klar, wie sich das Verhalten zwischen ihnen unterscheidet. Kann mir bitte jemand erklären helfen?

Auch die Tatsache, dass es nicht dokumentiert ist, bedeutet es, dass RootProject und ProjectRef nicht die empfohlene Möglichkeit sind, andere sbt-Projekte zu referenzieren?

Danke.

+0

Können Sie ein Beispiel dafür geben, was Sie vorhaben? Das heißt, warum verweisen Sie auf ein anderes Projekt und auf welche Art von Projekt wird verwiesen? (Es ist nicht schlecht, das zu wollen - nur nach Kontext zu suchen.) –

+0

Sicher, Mark. Ich habe ein Projekt, das alle meine DAO-Klassen enthält und Datenbankoperationen behandelt. Dieses DAO-Projekt benötigt einen Verweis auf alle Domänenklassen im Domänenprojekt. Zur gleichen Zeit habe ich auch ein Service-Projekt, das beide betrifft. – suriyanto

+0

Sie möchten also, dass das DAO-Projekt vom Domain-Projekt abhängt? Wie in http://www.scala-sbt.org/release/docs/Getting-Started/Multi-Project.html#classpath-dependencies? –

Antwort

17

Ein einzelnes sbt-Build hat ein einzelnes project/-Verzeichnis für .scala Build-Definitionen und Plugin-Definitionen. Innerhalb dieses Builds können mehrere Unterprojekte mit eigenen .sbt Dateien erstellt werden, nicht jedoch eigene project/*.scala Dateien.

Wenn Sie andere, separate Builds direkt verwenden möchten, anstatt ihre veröffentlichten Binärdateien zu verwenden, verwenden Sie "Quellenabhängigkeiten". Dies ist, was RootProject und ProjectRef deklarieren. ProjectRef ist am allgemeinsten: Sie geben den Speicherort des Builds (ein URI) und die ID des Projekts im Build (ein String) an, von dem Sie abhängig sein möchten. RootProject ist ein Vorteil, der das Stammprojekt für den Build an dem von Ihnen angegebenen URI auswählt.

Quellenabhängigkeiten haben einen Overhead: Startzeit, Speichernutzung und Befehlszeilenbenutzerfreundlichkeit. Wenn die Gruppe von Projekten nicht separat sein muss, ist es am besten, einen einzelnen Build mit Standard-Teilprojekten zu verwenden.

+5

Mark, können Sie näher erläutern, warum Quellabhängigkeiten mehr Overhead haben? Ich bin gespannt, wie viel Aufwand wir von ihnen erwarten können. Welche Arten von Problemen treten bei der Verwendung von Befehlszeilen auf? –

+0

Nun, im Falle von Source-Abhängigkeiten muss SBT rekursiv gegen den Build des Quellprojekts laufen, anstatt JARs einzubinden. –

Verwandte Themen