Build-Tools: Maven und Gradle
Die Build-Tools automatizzano compilazione, testing, packaging e deployment.
Maven e Gradle sono i più usati nell'ecosistema Java.
Was du lernen wirst
- Maven: POM, lifecycle, dipendenze
- Gradle: build.gradle, tasks
- Gestione dipendenze
- Plugin e configurazione
Maven
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>my-app</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<properties>
<maven.compiler.source>21</maven.compiler.source>
<maven.compiler.target>21</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.10.0</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
</plugin>
</plugins>
</build>
</project>
Maven-Lifecycle
| Phase |
Beschreibung |
| mvn clean |
Entfernt target/ |
| mvn compile |
Kompiliert die Quellen |
| mvn test |
Fuehrt Tests aus |
| mvn package |
Erstellt JAR/WAR |
| mvn install |
Installiert im lokalen Repository |
| mvn deploy |
Deploy zum Remote-Repository |
Gradle
plugins {
id 'java'
id 'application'
}
group = 'com.example'
version = '1.0.0'
java {
toolchain {
languageVersion = JavaLanguageVersion.of(21)
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'com.google.guava:guava:32.1.2-jre'
testImplementation 'org.junit.jupiter:junit-jupiter:5.10.0'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
application {
mainClass = 'com.example.Main'
}
tasks.named('test') {
useJUnitPlatform()
}
plugins {
java
application
}
group = "com.example"
version = "1.0.0"
java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(21))
}
}
repositories {
mavenCentral()
}
dependencies {
implementation("com.google.guava:guava:32.1.2-jre")
testImplementation("org.junit.jupiter:junit-jupiter:5.10.0")
}
tasks.test {
useJUnitPlatform()
}
application {
mainClass.set("com.example.Main")
}
Vergleich Maven vs. Gradle
Wann waehlen
| Aspekt |
Maven |
Gradle |
| Konfiguration |
XML (ausfuehrlich) |
Groovy/Kotlin (praegnant) |
| Performance |
Gut |
Besser (inkrementell) |
| Flexibilitaet |
Konvention |
Sehr flexibel |
| Lernkurve |
Einfach |
Mittel |
| IDE-Unterstuetzung |
Hervorragend |
Hervorragend |
# Maven
mvn clean install # Build completa
mvn test # Solo test
mvn dependency:tree # Albero dipendenze
mvn package -DskipTests # Package senza test
# Gradle
gradle build # Build completa
gradle test # Solo test
gradle dependencies # Lista dipendenze
gradle build -x test # Build senza test
gradle tasks # Lista task disponibili