Salta al contenuto principale

16 - Build Tools: Maven e Gradle

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 ne pensi di questo articolo?

In Breve

Build Tools: Maven e Gradle I build tools automatizzano compilazione, testing, packaging e deployment. Maven e Gradle sono i più usati nell'ecosistema Java.

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

pom.xml Base
<?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

build.gradle (Groovy)
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()
}
build.gradle.kts (Kotlin DSL)
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
Comandi Comuni
# 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.

Fonti e approfondimenti

Prova Questi Strumenti

Strumenti gratuiti correlati a questo argomento.

Commenti

Caricamento commenti...

Accedi per commentare

Discuti questo articolo nella community

Unisciti al gruppo Telegram per discutere con altri sviluppatori, fare domande e condividere le tue esperienze.

Ti è piaciuto questo articolo?

Esplora altri contenuti sul blog o scopri i miei progetti