1. Maven
📂 Projektstruktur (Standard Directory Layout)
mavenstructure.jpeg

📄 Minimales pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<properties>
<java.version>17</java.version>
<spring.boot.version>3.2.0</spring.boot.version>
</properties>
<dependencies>
<!-- Starter Web (Spring MVC, Tomcat, Jackson) -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- JUnit 5 + Mockito -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<!-- Spring Boot starten über mvn spring-boot:run -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>🔧 Hauptbefehle Maven
mvn clean # Bereinigen von target/
mvn compile # Kompilieren von Java
mvn validate # Überprüft die Projektstruktur und das Vorhandensein aller benötigten Dateien
mvn test # Ausführen von Tests
mvn test-compile # Kompiliert Testcode (src/test/java)
mvn package # Baut jar/war in target/
mvn install # Installiert Artefakte im lokalen Repository (~/.m2)
mvn deploy # Sendet Artefakte in ein Remote-Repository
# (Nexus, Artifactory)
mvn site # Generiert die Projekt-Website
mvn verify # Führt Integrationstests und Code-Qualitätsprüfungen durch
mvn dependency:tree # Abhängigkeitsbaum (sehr nützlich!)
mvn dependency:list # Liste aller Projektabhängigkeiten
mvn dependency:analyze # Zeigt ungenutzte und nicht deklarierte Abhängigkeiten
mvn help:effective-pom # Zeigt den finalen POM mit Berücksichtigung von Vererbung und Profilen
mvn versions:display-dependency-updates # Zeigt verfügbare neue Versionen
# der Abhängigkeiten
mvn archetype:generate # Erstellt ein neues Projekt aus einer Vorlage (Archetype)
###############
# Spring Boot #
###############
mvn spring-boot:run # Startet die Spring Boot Anwendung
mvn clean spring-boot:run # Bereinigt zuerst target, dann startet.
mvn package spring-boot:repackage # Packt und "repackt" JAR/WAR # in ein ausführbares fat/uber JAR mit eingebautem
# Launcher.
mvn spring-boot:repackage # Nur "repacken", wenn package bereits
# erstellt wurde.
mvn spring-boot:build-image # Baut ein **OCI-Image** Container über
# Cloud Native Buildpacks (Paketo), ohne
# Dockerfile.
mvn spring-boot:start # Startet die Anwendung im Hintergrund für
# Integrationstests
mvn spring-boot:stop # Stoppt die Anwendung, die von start gestartet wurde.
mvn spring-boot:build-info # Generiert META-INF/build-info.properties
# (Version, Build-Zeit usw.) für
# /actuator/info.
mvn spring-boot:process-aot # AOT-Vorbereitung des Codes (Boot 3.x): generiert
# Hilfsklassen zur Beschleunigung
# des Starts/Minimierung der Reflexion.
mvn spring-boot:process-test-aot # AOT für Tests.
mvn spring-boot:help -Ddetail=true # Hilfe zu den Plugin-Zielen und ihren Parametern.
###############
# SONAR #
###############
mvn clean verify sonar:sonar -Dsonar.projectKey=clavionx-web -Dsonar.projectName='Сlavionx' -Dsonar.host.url=http://localhost:9000 -Dsonar.token=sqp_3606ea94664b701db82c3a1b3c0ad9b8a0ffecfc
mvn clean verify sonar:sonar -Psonar
**📄 Spring Profile in Gradle**
In application.properties/application.yml werden Profile angegeben:
```Powershell
spring.profiles.active=devStarten mit einem Profil:
gradle bootRun --args='--spring.profiles.active=prod'📌 Nützliche Gradle Plugins
plugins {
id 'checkstyle' // Code-Stil
id 'jacoco' // Testabdeckung
}3. Unterschiede Maven vs Gradle
| 🛠️ Charakteristik | Maven (pom.xml) | Gradle (build.gradle) |
|---|---|---|
| Konfigurationssprache | XML (starr) | Groovy/Kotlin DSL (flexibel) |
| Lernkurve | Niedrig | Höher (DSL muss bekannt sein) |
| Geschwindigkeit | Langsamer | Schneller (Caching, Parallelität) |
| Anpassbarkeit | Begrenzt | Sehr flexibel |
| Popularität | Dominiert | Wächst schnell |
| Wo häufiger verwendet | Spring Boot Projekte, Banken, Behörden | Microservices, DevOps-intensive Projekte |
4. Best Practices
- ✅ Verwende Spring Boot Starter Pakete (sie ersparen das manuelle Auswählen von Abhängigkeiten).
- ✅ Erstelle Profile dev/test/prod → für Konfigurationen, Logging, Datenbanken.
- ✅ In großen Projekten: Gradle (beschleunigt CI/CD).
- ✅ Für Bewerbungen und erste Projekte: Maven (einfacher und mehr Dokumentation).
- ✅ Überprüfe den Abhängigkeitsbaum (mvn dependency:tree, gradle dependencies) – das verhindert Konflikte.
📌 Fazit
- Maven = Standard, Einfachheit, ausgezeichnete Dokumentation.
- Gradle = Flexibilität, Geschwindigkeit, die richtige Wahl für moderne Microservices.
- Beide werden von Spring Boot gleich unterstützt. Zum Einstieg → lerne Maven. Wenn du dich daran gewöhnt hast → ziehe Gradle nach.