In Apache Maven gibt es verschiedene sogenannte „Scopes“ (Bereiche), die verwendet werden, um die Sichtbarkeit und Verfügbarkeit von Abhängigkeiten in einem Maven-Projekt zu steuern. Jeder Scope hat eine spezifische Bedeutung und Verwendungszwecke. Hier sind die möglichen Maven Scopes in der pom.xml:
compile: Dies ist der Standard-Scope. Die Abhängigkeit ist während der gesamten Lebensdauer des Projekts verfügbar und wird in den Compiler-Klassenpfad aufgenommen.
provided: Die Abhängigkeit wird vom Build-System bereitgestellt (z. B. vom Servlet-Container) und ist nur während der Kompilierung und beim Testen verfügbar, nicht jedoch zur Laufzeit. Dies ist nützlich, wenn Sie sicherstellen möchten, dass die Abhängigkeit zur Kompilierungszeit verfügbar ist, aber nicht im finalen Build enthalten ist.
runtime: Die Abhängigkeit ist zur Laufzeit verfügbar, aber nicht zur Kompilierungszeit. Dies ist nützlich für Abhängigkeiten, die nur für die Ausführung der Anwendung benötigt werden.
test: Die Abhängigkeit ist nur zur Durchführung von Tests verfügbar und hat keine Auswirkungen auf die Anwendung zur Laufzeit.
system: Sie müssen die Abhängigkeit manuell angeben und den Pfad zum JAR-Datei-System bereitstellen. Dies ist in der Regel nicht empfohlen, da Maven dann die Abhängigkeitsauflösung und -verwaltung nicht übernimmt.
import: Dieser Scope wird normalerweise in einer BOM (Bill of Materials) verwendet, um Abhängigkeiten mit einer bestimmten Version zu deklarieren, ohne sie tatsächlich hinzuzufügen. Sie werden in der Regel nicht in Ihrem eigenen Projekt verwendet.
compile-only: Diese Abhängigkeiten sind zur Kompilierungszeit verfügbar, werden jedoch nicht in das resultierende Artefakt (z. B. JAR) aufgenommen. Dieser Scope ist in Maven 3.3.1 und höher verfügbar.
test-compile: Diese Abhängigkeiten sind nur zur Kompilierungszeit für Testklassen verfügbar. Sie werden im finalen Build nicht aufgenommen und haben keine Auswirkungen auf die Anwendung zur Laufzeit. Dieser Scope ist in Maven 3.2.2 und höher verfügbar.
Die Verwendung des richtigen Scopes für Ihre Abhängigkeiten ist wichtig, um die korrekte Verwaltung von Abhängigkeiten und den effizienten Einsatz von Ressourcen in Ihrem Maven-Projekt sicherzustellen.
Download maven-scops.pdf.