Risposta diretta
Tra Maven e Gradle, il principale punto di differenza risiede nella loro approccio alla configurazione dei progetti: Maven utilizza un file XML per definire le dipendenze e la logica di costruzione, mentre Gradle utilizza una sintassi basata su Groovy o Kotlin.
Build Tools: Maven e Gradle
I build tools automatizzano compilazione, testing, packaging e deployment. Maven e Gradle sono i più usati nell'ecosistema Java.
Cosa Imparerai
- 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
| Fase | Descrizione |
|---|---|
| mvn clean | Rimuove target/ |
| mvn compile | Compila i sorgenti |
| mvn test | Esegue i test |
| mvn package | Crea JAR/WAR |
| mvn install | Installa nel repository locale |
| mvn deploy | Deploy al repository remoto |
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")
}
Confronto Maven vs Gradle
Quando Scegliere
| Aspetto | Maven | Gradle |
|---|---|---|
| Configurazione | XML (verboso) | Groovy/Kotlin (conciso) |
| Performance | Buona | Migliore (incremental) |
| Flessibilità | Convenzione | Molto flessibile |
| Curva apprendimento | Facile | Media |
| IDE Support | Eccellente | Eccellente |
# 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
Domande frequenti
Quali sono le principali funzionalità dei build tools?
I build tools automatizzano compilazione, testing, packaging e deployment.
Qual è la differenza tra Maven e Gradle?
Sono entrambi i più usati nell'ecosistema Java per l'automatizzazione di processi come compilazione, testing, packaging e deployment.
Perché sono considerati i build tools più utilizzati in ambito Java?
Sono considerati i build tools più utilizzati in ambito Java perché automatizzano con efficacia le fasi di sviluppo del progetto.

Commenti
Caricamento commenti...
Accedi per commentare