Maven / Gradle für Java: Vollständiges Handbuch mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einleitung: Was sind Maven und Gradle und wozu braucht man sie?

\n\n

In der Welt der Java-Entwicklung gibt es ein grundlegendes Problem: Wie verwaltet man Abhängigkeiten (externe Bibliotheken), automatisiert den Build-Prozess, führt Tests aus und erstellt finale Artefakte (JAR, WAR)? Das manuelle Herunterladen von JAR-Dateien und das Konfigurieren des Classpath ist ein Irrweg, besonders bei Projekten mit Dutzenden von Abhängigkeiten.

\n\n

Maven und Gradle sind die beiden beliebtesten Systeme zur automatischen Build-Automatisierung (Build Automation Tools) für Java. Sie lösen die folgenden Aufgaben:

\n
    \n
  • Abhängigkeitsverwaltung: Automatisches Herunterladen von Bibliotheken aus zentralen Repositories (Maven Central, Google Maven) und deren transitiven Abhängigkeiten.
  • \n
  • Standardisierung des Lebenszyklus: Kompilierung, Testen, Paketierung, Bereitstellung – all dies wird mit Standardbefehlen ausgeführt.
  • \n
  • Reproduzierbarkeit von Builds: Jeder Entwickler kann ein Projekt mit einem einzigen Befehl bauen, indem er nur den Quellcode und die Konfigurationsdatei besitzt.
  • \n
  • Integration mit CI/CD: Jenkins, GitLab CI, GitHub Actions können Maven/Gradle-Builds problemlos ausführen.
  • \n
\n\n

Maven verwendet XML (Datei pom.xml) und einen strikten Lebenszyklus. Gradle verwendet Groovy oder Kotlin DSL (Datei build.gradle oder build.gradle.kts), es ist flexibler und schneller dank inkrementeller Builds. In diesem Artikel betrachten wir beide Werkzeuge, konzentrieren uns aber auf Gradle als modernere Lösung.

\n\n

Installation von Maven und Gradle

\n\n

Installation von Maven

\n

Maven wird nicht über pip oder npm installiert. Es muss von der offiziellen Website heruntergeladen oder über den Paketmanager des Betriebssystems installiert werden.

\n
# macOS (Homebrew)\nbrew install maven\n\n# Ubuntu/Debian\nsudo apt-get update\nsudo apt-get install maven\n\n# Windows (Chocolatey)\nchoco install maven\n\n# Überprüfung der Installation\nmvn --version
\n\n

Installation von Gradle

\n

Gradle wird ebenfalls separat installiert. Es wird empfohlen, SDKMAN! zur Verwaltung der Versionen zu verwenden.

\n
# Installation von SDKMAN (falls noch nicht installiert)\ncurl -s "https://get.sdkman.io" | bash\nsource "$HOME/.sdkman/bin/sdkman-init.sh"\n\n# Installation der neuesten Gradle-Version\nsdk install gradle\n\n# Überprüfung\ngradle --version\n\n# Alternativ: Herunterladen von https://gradle.org/releases/ und Entpacken
\n\n

Schnellstart: Erstellen eines Projekts

\n\n

Erstellen eines Projekts mit Maven

\n

Maven kann ein Projektskelett über Archetypen (Archetypes) generieren.

\n
# Ein einfaches Java-Projekt erstellen\nmvn archetype:generate -DgroupId=com.example -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false\n\n# In den Projektordner wechseln\ncd my-app\n\n# Projekt bauen\nmvn clean package\n\n# Ausführen (wenn die main-Klasse konfiguriert ist)\njava -cp target/my-app-1.0-SNAPSHOT.jar com.example.App
\n\n

Erstellen eines Projekts mit Gradle

\n

Gradle verwendet den Befehl init zum Erstellen eines Skeletts.

\n
# Ordner erstellen und Projekt initialisieren\nmkdir my-gradle-app\ncd my-gradle-app\ngradle init\n\n# Auswählen: 2: application -> 3: Java -> 1: Groovy DSL -> 2: JUnit Jupiter -> Enter\n\n# Bauen und Ausführen\n./gradlew build\n./gradlew run
\n\n

Danach erhalten Sie eine Projektstruktur mit den Dateien build.gradle (oder pom.xml für Maven) und den Ordnern src/main/java und src/test/java.

\n\n

Grundlegende Methoden/Funktionen (Gradle DSL)

\n

Betrachten wir die wichtigsten Konstrukte von Gradle (Groovy DSL). Für Maven sind sie analog, aber die Syntax ist XML.

\n\n

1. dependencies { ... }

\n

Was es tut: Definiert die Abhängigkeiten des Projekts – externe Bibliotheken, die aus den Repositories heruntergeladen werden.

\n

Parameter: Innerhalb des Blocks werden Konfigurationen (implementation, testImplementation, compileOnly usw.) und Koord

Empfehlungen