
Build-Prozess, Überblick über Software-Build- und Abhängigkeitsverwaltungstools
Voraussetzungen; Vorbereitung auf Maven; Maven-Verzeichnisstruktur; Maven-Versionen und Updates
Die pom.xml-Datei im Stammverzeichnis; Minimal-POM; Konvention vor Konfiguration in Maven; Maven-Koordinaten (GAV); Schritte zur Erstellung eines neuen Maven-Projekts
Erstellen eines Beispielprojekts; Tool-Fenster für Maven
Standard-Verzeichnislayout; Projekt bauen und verifizieren; .m2-Verzeichnis; target-Verzeichnis; Zusammenführen von Quell- und Ressourcendateien; Verzeichnis im Klassenpfad
Standard-Codierung und Java-Compiler-Version; Definition von Properties im POM; Referenzierung von Properties in Maven; Property-Belegungen anzeigen
Integriertes Terminal; Befehle über die IDE ausführen; Maven-Änderungen anwenden; Property einführen
Schlüsselvorteile des Abhängigkeitsmanagements; project.dependencies; Hinzufügen von SLF4J
Verschiedene Möglichkeiten zum Hinzufügen von Abhängigkeiten; Abhängigkeitshierarchie
Unterschied zwischen lokalen und Remote-Repositories verstehen; maven-metadata.xml; zentraler Index
Standardstruktur des lokalen Repositories; Auflösung von Abhängigkeiten; Risiken beschädigter Dateien; Prozess der Prüfsummenüberprüfung; mvn install; Java-Archive im Klassenpfad
Anzeige von Repositories; Herunterladen von Quellen und Dokumentation; JAR-Dateien im Klassenpfad; Prüfsummenrichtlinie
SLF4J-Provider-Übersicht; Auflösung transitiver Abhängigkeiten; slf4j-simple-POM verstehen; Abhängigkeitsbaum in der Konsole visualisieren; dependency:tree; vollständigen Abhängigkeitsbaum visualisieren
Überblick über Dependency-Scopes: compile, runtime, provided; Auswirkung des provided-Scopes auf die Abhängigkeitsweitergabe
Verständnis von optionalen Abhängigkeiten; Vor- und Nachteile von optionalen Abhängigkeiten
Verständnis von Maven-Classifiers; Beispiele
Verständnis von Maven-Abhängigkeitstypen; Beispiele: WAR, AAR, DLL, POM; Typ und Dateiendung
Snapshot-Version; Snapshot-Repositories; Namenskonvention für Snapshot-Dateien; Tipps zur Verwendung von Snapshot-Repositories
Wichtigkeit von Versionsnummern in Maven; Datentyp und Flexibilität von Maven-Versionsnummern; Semantische Versionierung (SemVer); Kalender-Versionierung (CalVer); Maven-Dateibenennungsschema mit Versionsnummer; wie Maven die Versionsreihenfolge festlegt
Verständnis von Abhängigkeitskonflikten; doppelte Abhängigkeiten; Verhalten bei der Auflösung von Abhängigkeiten; Pfadlänge; wesentliche Unterschiede in der Abhängigkeitsauflösung
Konflikte in unterschiedlichen Darstellungen erkennen
Direkte Abhängigkeit; Ausschluss; Exlusion vs. Optional
Maven Version Range Syntax; Best Practices
SLF4J-Version über Property setzen
dependencyManagement; dependencyManagement mit Properties kombinieren
Bill of Material (BOM); Framework-BOMs; Erstellen einer eigenen Import-POM; Importieren und Verwalten von Abhängigkeiten
Plugin-Goal-Beziehung; mvn plugin: Ausführen von Plugin-Goals; depgraph-maven-plugin; Compiler-Plugin mit Goals; Präfix; Auflisten von Goals eines Plugins
Explizite Versionsdefinition für Stabilität; Konfiguration von Plugins im POM; Verwendung von Properties für Versionsverwaltung; Standard-groupId für Maven-Core-Plugins; Zentralisierte Konfiguration mit pluginManagement
Aufbau der Webseite; erforderliche und optionale Parameter; Typen; Standardwerte; Versionskompatibilität
configuration-Element; deprecated APIs melden; direkte Compiler-Argumente übergeben
User Properties als Plugin-Konfigurationsalternative; Einstellung via properties oder Kommandozeile; Properties überschreiben keine POM-Konfigurationen; nicht alle Plugin-Optionen als Properties verfügbar; Properties für flexible Builds, Plugin-Konfiguration für konstante Einstellungen
Lebenszyklen: clean, default, site; Lebenszyklus besteht aus Phasen; Aufgaben der Phasen; Reihenfolge der Phasen
Sequenzielle Ausführung; Häufige Phasen: compile, package, verify; packaging bestimmt Ausgabeformat; BUILD SUCCESS/FAILURE; Separate Lebenszyklen: clean, default, site; Kombinierbare Phasen und Plugin-Goals
Plugin-Goals mit Phasen verknüpfen; Plugin-Goals aller Phasen der Lebenszyklen clean,site; Plugin-Goals von JAR-Packaging
Mehrere Ziele in einer Ausführung; Reihenfolge in Phasen; Plugins in verschiedenen Phasen; Ausführungs-IDs zuweisen; IDs für gezielte Aufrufe anpassen; Plugin- vs. Ausführungskonfiguration; Syntax für Konfigurationsüberschreibungen
POM Projektstruktur mit Grundelementen, Projektinfos, Environment Settings für CI, SCM und Repositories; POM dient als zentrale Informationsquelle für Build-Tools und Dokumentationsgeneratoren; standardisierte Elementreihenfolge gemäß Maven-Konventionen
Maven-Build-Konfiguration; Verzeichnisstrukturen wie src/main/java und target, resources/testResources umdefinieren; Ressourcen-Filterung ermöglicht Platzhalter-Ersetzung mit ${...}; Standard-Build-Ziel mit defaultGoal setzen; Directory-Struktur und Maven-Konventionen
Setzen von Namen, Beschreibung, URL und Gründungsjahr, Lizenzen und Organisation; Entwickler und Mitwirkende; Beispiel aus echtem Projekt
Custom Repositories für private/zusätzliche Abhängigkeiten; Repository-Konfiguration über repositories und pluginRepositories Tags; Update- und Checksum-Policies; lokale JARs über Custom Repository oder install:install-file einbindbar; Umgebungseinstellungen definieren Issue-Tracking, CI und Mailinglisten
Projektinfrastruktur setzen; issueManagement für Bug-Tracking-System; ciManagement für CI-System-Integration mit Benachrichtigungen; scm verwaltet Versionskontrolle mit Git/SVN; mailingLists dokumentiert Projekt-Mailinglisten; distributionManagement steuert Artefakt- und Doku-Verteilung; prerequisites setzt Maven-Versionsanforderungen für Plugins; Beispiel aus echtem Projekt
Super POM als Basis-Konfiguration; Standardeinstellungen aus Super POM für Compilierung und Build; Werte überschrieben; ermöglicht Convention over Configuration Prinzip; standardisiert Repository-Management und Dependency-Handling; Teil der Maven-Installation
Parent POM zentralisiert gemeinsame Projektkonfigurationen; erbt vom Super POM und vererbt an Child POMs; packaging type pom; Spring Boot Parent POM als Beispiel für reale Nutzung; relativePath; Parent POM vs. Import POMs
Effective POM zeigt vollständige Konfiguration, kombiniert Super POM, Parent POM und Projekt-POM; help:effective-pom
Projektvorlage für schnellen Start; archetype:generate im interaktiven oder Batch-Modus
maven-plugin packaging type; Mojos implementieren Plugin-Funktionalität mit @Mojo Annotation; Parameter über @Parameter konfigurieren; Dependency Injection mit @Inject; MavenProject-Objekt bietet Zugriff auf Projektinfos; Plugin-Dokumentation über Javadoc und POM; META-INF/maven/plugin.xml enthält Plugin-Metadaten; Plugin-Hilfe über mvn help:describe anzeigen
Maven ist ein Tool, das dir hilft, deine Java-Projekte zu organisieren und automatisiert zu bauen. Es kümmert sich um die Verwaltung von Abhängigkeiten, damit du dich auf den eigentlichen Code konzentrieren kannst, ohne manuell Java-Bibliotheken zu verwalten. Mit Maven kannst du einfach dein Projekt strukturieren und mit nur einem Befehl den gesamten Build-Prozess steuern.
INHALT
In diesem Kurs werden wir uns darauf konzentrieren, wie du Maven nutzen kannst, um die Abhängigkeiten deiner Projekte effektiv zu organisieren und zu steuern. Du wirst lernen:
1. Grundlagen des Maven Dependency Managements
2. POM-Grundlagen und Maven-Directory-Layout, Properties
3. Konfiguration von Abhängigkeiten in der pom.xml
4. Umgang mit Versionskonflikten und transitiven Abhängigkeiten
5. Plugins-Goals führen Aufgaben aus
6. Lebenszyklus, Phase und assoziierte Plugin-Goals
Egal, ob du ein Einsteiger in der Java-Entwicklung bist oder Maven-Kenntnisse vertiefen möchtest: Dieser Kurs wird dir helfen, Projekte effizienter zu gestalten und typische Fallstricke im Dependency-Management zu vermeiden.
SPRACHE
Während ich den Kurs auf Deutsch halte und alle Erklärungen auf Deutsch gebe, sind die Kursunterlagen (Folien und Codebeispiele) auf Englisch verfasst. Dies spiegelt die Realität in vielen internationalen Entwicklungsteams wider und bereitet dich optimal auf die Arbeit mit englischsprachiger Dokumentation und Code vor.
NICHT BEHANDELTE THEMEN
Es ist wichtig zu beachten, dass einige Spezialthemen nicht Teil dieses Kurses sind. Wir werden nicht eingehen auf:
Multi-Module-Maven-Projekte
Lokale Konfiguration über settings.xml
Maven-Toolchains für multiple JDK-Versionen
Maven-Erweiterungen (Extensions)
Generierung von Maven-Reports
Integration mit Continuous Integration/Continuous Deployment (CI/CD) Systemen
Der Fokus liegt auf der praktischen Anwendung von Maven in typischen Java-Projekten, um dir einen soliden Grundstein für die tägliche Entwicklungsarbeit zu geben.
VERSION
Es wird die aktuelle Version Maven 3.9 behandelt.