Multi-Projekt-Builds und Deployment
Konfigurieren und verwalten Sie SBT-Multi-Projekt-Builds für größere Anwendungen und bereiten Sie diese für das Deployment vor.
Multi-Projekt-Builds und Deployment ist eine kostenlose Scala for Backend Engineering & Functional Programming-Lektion auf CoddyKit. Dies ist Lektion 3 von 3. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Scala for Backend Engineering & Functional Programming-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Scala for Backend Engineering & Functional Programming-Kurs umfasst insgesamt 3 Lektionen.
Warum Multi-Projekt-Builds?
Wenn Scala-Anwendungen wachsen, kann es schwierig werden, den gesamten Code in einem einzigen Projekt zu verwalten. Multi-Projekt-Builds helfen Ihnen dabei, Ihre Codebasis zu organisieren.
Sie ermöglichen Ihnen:
- verschiedene Module zu trennen, z. B. Kernlogik, API und Dienstprogramme.
- Abhängigkeiten zwischen diesen Modulen übersichtlich zu verwalten.
- bestimmte Einstellungen auf einzelne Teile Ihrer Anwendung anzuwenden.
Dieser Ansatz verbessert die Modularität und Wartbarkeit.
Mehrere Projekte definieren
In SBT definieren Sie mehrere Projekte in Ihrer zentralen Datei build.sbt. Jedes Projekt ist typischerweise ein lazy val.
Das Root-Projekt aggregiert diese Unterprojekte normalerweise oder hängt von ihnen ab.
Hier sehen Sie eine grundlegende Einrichtung für ein Root-Projekt und zwei Unterprojekte:
lazy val root = project
.in(file("."))
.aggregate(core, api)
lazy val core = project
.in(file("core"))
lazy val api = project
.in(file("api"))Verzeichnisstruktur der Unterprojekte
Bei einem Multi-Projekt-Build befindet sich jedes Unterprojekt typischerweise in einem eigenen Verzeichnis auf der obersten Ebene Ihres Projekts.
Die Standardstruktur sieht folgendermaßen aus:
my-app/(Verzeichnis des Root-Projekts)build.sbt(zentrale Build-Datei)project/(Definitionsdateien für den SBT-Build)core/(Verzeichnis des Unterprojekts „core“)src/(Quellcode für „core“)
api/(Verzeichnis des Unterprojekts „api“)src/(Quellcode für „api“)
Beispielcode eines Unterprojekts
Jedes Unterprojekt kann eigene Scala-Quelldateien enthalten. Beispielsweise könnte unser core-Projekt ein einfaches Dienstprogramm enthalten.
Versuchen Sie, dieses Beispiel aus dem core-Projekt heraus auszuführen:
package com.coddykit.core
object Greeter {
def greet(name: String): String = s"Hello, $name!"
}
object CoreApp {
def main(args: Array[String]): Unit = {
println(Greeter.greet("CoddyKit"))
}
}Abhängigkeiten zwischen Projekten
Oft muss ein Unterprojekt Code aus einem anderen verwenden. Beispielsweise könnte Ihr api-Projekt den Greeter aus dem core-Projekt benötigen.
Sie deklarieren diese Abhängigkeiten mit .dependsOn() in Ihrer Datei build.sbt.
lazy val root = project
.in(file("."))
.aggregate(core, api)
lazy val core = project
.in(file("core"))
lazy val api = project
.in(file("api"))
.dependsOn(core)Gemeinsame Einstellungen verwenden
Viele Einstellungen, etwa die Scala-Version oder gemeinsame Abhängigkeiten, können in allen Unterprojekten gleich sein.
Um Wiederholungen zu vermeiden, können Sie einen commonSettings-Block definieren und auf jedes Projekt anwenden.
lazy val commonSettings = Seq(
scalaVersion := "2.13.8",
organization := "com.coddykit"
)
lazy val root = project
.in(file("."))
.aggregate(core, api)
.settings(commonSettings)
lazy val core = project
.in(file("core"))
.settings(commonSettings)
lazy val api = project
.in(file("api"))
.dependsOn(core)
.settings(commonSettings)Tasks aggregieren
Wenn Ihr Root-Projekt Unterprojekte aggregiert, wird ein Task wie compile, den Sie im Root-Projekt ausführen, automatisch für alle aggregierten Unterprojekte ausgeführt.
Wenn Sie beispielsweise in Ihrem Root-Verzeichnis sbt compile eingeben, werden sowohl core als auch api kompiliert.
Die Methode .aggregate() ist für dieses Verhalten entscheidend.
Für die Bereitstellung paketieren
Sobald Ihre Anwendung erstellt wurde, müssen Sie sie für die Bereitstellung paketieren. Das bedeutet normalerweise, eine ausführbare JAR-Datei (Java Archive) zu erstellen.
Bei Multi-Projekt-Builds möchten Sie häufig eine einzelne JAR-Datei, die den gesamten Code Ihres Projekts und dessen Abhängigkeiten enthält. Dies wird als „Fat JAR“ oder „Uber JAR“ bezeichnet.
SBT erstellt standardmäßig keine Fat JARs, aber Plugins können dabei helfen.
SBT Assembly Plugin für Fat JARs
Das Plugin sbt-assembly wird häufig zum Erstellen von Fat JARs verwendet. Es bündelt alle kompilierten Klassen und Abhängigkeiten in einer ausführbaren JAR-Datei.
Fügen Sie das Plugin zunächst zu project/plugins.sbt hinzu:
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "2.0.0")Paketierung von Multi-Projekt-Builds
Welche der folgenden Aussagen über die Paketierung einer Scala-Anwendung mit mehreren Projekten für die Bereitstellung ist RICHTIG?
Rückblick und nächste Schritte
Sie haben gelernt, wie Sie Multi-Projekt-Builds in SBT strukturieren und verwalten!
- Wir haben behandelt, wie Unterprojekte in
build.sbtdefiniert werden. - Sie haben gesehen, wie Verzeichnisse organisiert und Abhängigkeiten zwischen Projekten mit
.dependsOn()verwaltet werden. - Wir haben das Teilen gemeinsamer Einstellungen und das Aggregieren von Tasks besprochen.
- Zum Schluss haben wir die Paketierung für die Bereitstellung untersucht, insbesondere die Verwendung des Plugins
sbt-assemblyzum Erstellen von Fat JARs.
Die Beherrschung von Multi-Projekt-Builds ist für größere, komplexere Scala-Anwendungen entscheidend, da sie Modularität und effiziente Entwicklungsabläufe ermöglicht.
Häufig gestellte Fragen
Ist die Lektion „Multi-Projekt-Builds und Deployment“ kostenlos?
Ja — der vollständige Text von „Multi-Projekt-Builds und Deployment“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Scala for Backend Engineering & Functional Programming-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Scala for Backend Engineering & Functional Programming-Kurs umfasst insgesamt 3 Lektionen.
Was lerne ich in „Multi-Projekt-Builds und Deployment“?
Konfigurieren und verwalten Sie SBT-Multi-Projekt-Builds für größere Anwendungen und bereiten Sie diese für das Deployment vor. Du übst Scala for Backend Engineering & Functional Programming mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Scala for Backend Engineering & Functional Programming zu starten?
Keine Vorkenntnisse erforderlich. Scala for Backend Engineering & Functional Programming auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 3.
Wie lange dauert die Lektion „Multi-Projekt-Builds und Deployment“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Scala for Backend Engineering & Functional Programming-Lektion Code schreiben und ausführen?
Ja. Jede Scala for Backend Engineering & Functional Programming-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- SBT-Projekte einrichten und Grundlagen
- Abhängigkeitsverwaltung und Plugins
- Multi-Projekt-Builds und Deployment