Suche…


Mehrere Projekte im selben Build (Teilprojekte)

Manchmal kombiniert ein Build mehrere Quellverzeichnisse, von denen jedes ein eigenes "Projekt" ist. Beispielsweise haben Sie eine Build-Struktur wie folgt:

Projektname / build.sbt Projekt / src / main / ... test / ... core / src / main / ... test / ... webapp / src / main / ... test / ...

In dem obigen Projekt, wird der Code in projectName/src wird das als root - Projekt. Es gibt zwei weitere Module oder "Teilprojekte", core und webapp .

Das Konfigurieren eines Unterprojekts ähnelt dem Konfigurieren des Stammprojekts, mit der Ausnahme, dass das Unterverzeichnis im Projekt angegeben ist. Dieses Beispiel zeigt ein webapp , das ein core und ein webapp Projekt zusammenfasst.

lazy val root = (project in file(".")).aggregate(core,webapp).dependsOn(core, webapp)

lazy val core = (project in file("core"))

lazy val webapp = (project in file("webapp")).dependsOn(core)

Die an file() Werte sind die Verzeichnisse relativ zum Projektstamm.

Das webapp Projekt hängt vom core dependsOn wird durch die dependsOn , die den in der obigen Zeile angegebenen core annimmt. dependsOn und " lazy Evaluation" stellen sicher, dass Abhängigkeiten verfügbar sind, bevor Projekte sie nutzen. In diesem Fall hängt webapp vom core . Der core wird also kompiliert, bevor der Build versucht, webapp zu kompilieren.

aggregate macht die in einem Projekt definierten Aufgaben für das Projekt verfügbar, das es aggregiert. Zum Beispiel das Ausführen compile im root - Projekt wird auch ausführen compile in core und webapp .

Konfigurieren Sie Makros in einem Projekt

build.sbt Datei build.sbt (oder wo das Projekt definiert ist, wenn es sich an einem anderen Ort befindet) die folgende Einstellung hinzu:

scalacOptions += "-language:experimental.macros"

Ein Projekt könnte beispielsweise folgendermaßen definiert werden:

lazy val main = project.in(file("."))  // root project
  .settings(scalacOptions += "-language:experimental.macros",
            addCompilerPlugin("org.scalamacros" % "paradise" % "2.1.0" cross CrossVersion.full))

Im obigen Beispiel ist das paradise Plugin enthalten, um Scala 2.10.x vollständig zu unterstützen.

Bildschirmeinstellungen

Um in der SBT-Konsole alle definierbaren Einstellungen für ein Projekt aufzulisten:

settings

Oder um die Einstellungen eines Unterprojekts (beispielsweise mit dem Namen webapp ) webapp :

project webapp
settings

Die erste Zeile darüber navigiert in das jeweilige Unterprojekt.

So zeigen Sie den Wert einer bestimmten Einstellung (zum Beispiel der organization ) an:

show organization

Dadurch wird der Wert dieser Einstellung angezeigt.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow