1 06/11/2026 8 min

Apache Maven su Ubuntu si installa in due modi sensati: dai repository APT della distribuzione, oppure con il pacchetto ufficiale scaricato dal sito Apache. La scelta dipende soprattutto da un punto: ti serve una versione stabile e integrata con gli aggiornamenti di sistema, oppure una release più recente e controllata manualmente? In entrambi i casi la prima verifica da fare è la stessa: Java deve essere presente e funzionante, altrimenti Maven installa anche quanto vuoi ma non parte.

Su Ubuntu 24.04, 22.04 e 20.04 la procedura non cambia molto. Quello che cambia davvero è la versione di OpenJDK disponibile nei repository e il livello di aggiornamento del pacchetto Maven. Se lavori su macchine di produzione o su ambienti condivisi, conviene sempre partire da una verifica dello stato attuale: versione di Java, eventuale Maven già installato, e presenza di conflitti con installazioni manuali precedenti.

Verifiche iniziali prima dell’installazione

Prima di installare, controlla se Java è già disponibile e quale versione viene vista dal sistema. Maven richiede un JDK, non solo un JRE, perché deve compilare e risolvere dipendenze durante le build.

java -version
javac -version
mvn -version

Se il comando java -version restituisce un errore, o se javac non esiste, la priorità è installare un JDK. Se invece mvn -version risponde con una versione già presente, valuta se vuoi sostituire quella installazione o affiancarla. Su server e workstation ben tenuti, una doppia installazione di Maven è una fonte classica di confusione nei percorsi.

Installazione di Maven con APT

Per la maggior parte dei casi l’approccio più semplice è usare i repository Ubuntu. È rapido, pulito e si integra con gli aggiornamenti di sicurezza del sistema. Il rovescio della medaglia è che la versione disponibile può non essere l’ultima pubblicata da Apache.

Su Ubuntu 24.04, 22.04 e 20.04 i passaggi sono questi:

sudo apt update
sudo apt install default-jdk maven

Se preferisci un JDK specifico, sostituisci default-jdk con il pacchetto desiderato, per esempio una versione OpenJDK ben definita. Dopo l’installazione, verifica subito il risultato:

mvn -version
java -version

Il controllo importante non è solo la presenza del comando, ma anche il percorso effettivo usato dal sistema. In mvn -version osserva la riga con la directory di installazione e la versione Java associata. Se la JVM non è quella attesa, Maven può funzionare ma compilare con una base diversa da quella prevista.

Quando conviene il pacchetto ufficiale Apache

Se ti serve una versione più recente di quella presente nei repository Ubuntu, il pacchetto ufficiale Apache è spesso la scelta migliore. È utile anche quando vuoi mantenere Maven separato dal ciclo di aggiornamento del sistema operativo. Questo però sposta su di te la responsabilità di aggiornare, verificare e rimuovere correttamente la release installata manualmente.

Il vantaggio è il controllo. Lo svantaggio è che devi gestire tu il path, l’eventuale link simbolico e la pulizia delle versioni precedenti. In ambienti server, questa differenza conta molto più della comodità iniziale.

Installazione manuale in /opt

La procedura tipica prevede il download dell’archivio binario, l’estrazione in /opt e la creazione di un link simbolico stabile. Ecco un flusso pulito e reversibile:

cd /tmp
wget https://downloads.apache.org/maven/maven-3/3.9.9/binaries/apache-maven-3.9.9-bin.tar.gz
tar -xzf apache-maven-3.9.9-bin.tar.gz
sudo mv apache-maven-3.9.9 /opt/
sudo ln -sfn /opt/apache-maven-3.9.9 /opt/maven

La versione nell’URL è un esempio: se vuoi una release diversa, prendila dalla pagina ufficiale di Apache Maven e sostituiscila in modo coerente. Non dare per scontato che una versione vecchia sia ancora la migliore per il tuo caso d’uso; verifica sempre compatibilità con il progetto e con la versione di Java disponibile.

Dopo aver creato il link simbolico, aggiungi Maven al PATH a livello sistema o utente. Per un setup per utente singolo è spesso più prudente intervenire su ~/.bashrc o ~/.zshrc. Per un’installazione condivisa, meglio un file in /etc/profile.d/.

echo 'export M2_HOME=/opt/maven' | sudo tee /etc/profile.d/maven.sh
printf '%s
' 'export PATH=$M2_HOME/bin:$PATH' | sudo tee -a /etc/profile.d/maven.sh
sudo chmod +x /etc/profile.d/maven.sh
source /etc/profile.d/maven.sh

Se preferisci evitare variabili globali, puoi esportarle solo nella shell dell’utente che compila. Questo riduce il blast radius: meno impatto sugli altri account e meno rischio di interferenze con script di sistema. Il rollback, in quel caso, è semplice: rimuovi le righe aggiunte e chiudi la sessione.

Configurare Java in modo corretto

Maven non sostituisce Java, lo usa. Per questo la parte più importante dell’installazione è spesso la più trascurata: scegliere il JDK corretto. Su Ubuntu puoi verificare quali versioni sono installate con update-alternatives.

sudo update-alternatives --config java
sudo update-alternatives --config javac

Questo passaggio è utile quando hai più JDK presenti e vuoi evitare che Maven usi una versione diversa da quella prevista dal progetto. Dopo la selezione, ripeti mvn -version e controlla la riga Java version. Se non coincide, il problema non è Maven ma l’ambiente Java sottostante.

Verifica finale con un progetto di prova

Il controllo più affidabile non è solo vedere la versione, ma eseguire una build minima. Se vuoi una verifica rapida, crea un progetto di test o usa un progetto esistente con un obiettivo semplice come validate o package.

mkdir -p /tmp/maven-test
cd /tmp/maven-test
mvn -q archetype:generate \ -DgroupId=com.example \ -DartifactId=demo \ -DarchetypeArtifactId=maven-archetype-quickstart \ -DinteractiveMode=false
cd demo
mvn test

Se il comando termina senza errori, Maven è installato correttamente e riesce a risolvere dipendenze, compilare e lanciare i test. Se fallisce, leggi il primo errore reale, non la coda del log. Spesso il problema è un JDK mancante, una variabile d’ambiente sbagliata o un repository non raggiungibile.

Gestire conflitti tra installazione APT e installazione manuale

Il caso più fastidioso è avere sia il pacchetto Ubuntu sia una copia manuale in /opt. In quel caso il sistema può richiamare una versione diversa da quella che credi di aver installato. Per capire quale binario viene usato davvero, controlla il path risolto dalla shell.

which mvn
readlink -f $(which mvn)
mvn -version

Se which mvn punta a /usr/bin/mvn, stai usando il pacchetto APT. Se punta a un path personalizzato, probabilmente il PATH è stato modificato. In ambienti con più amministratori, conviene documentare chiaramente quale installazione è la fonte di verità e rimuovere le altre per evitare sorprese.

Per rimuovere la versione installata con APT:

sudo apt remove maven

Rollback minimo: il pacchetto viene rimosso, ma i file di progetto e le configurazioni utente restano intatti. Se invece hai installato manualmente, il rollback consiste nel togliere il link simbolico e cancellare la directory della versione sotto /opt. Fallo solo se sei sicuro che nessun altro servizio la stia usando.

Problemi tipici e come riconoscerli in fretta

Se mvn non viene trovato, il problema è quasi sempre nel PATH. Se Maven parte ma segnala errori su Java, la causa è quasi sempre nel JDK o nelle alternative di sistema. Se la build fallisce durante il download delle dipendenze, il problema può essere la rete, un proxy aziendale, oppure un repository Maven non raggiungibile.

Un errore frequente in ambienti server è la differenza tra shell interattiva e shell non interattiva. Un utente può vedere Maven nella propria sessione SSH, ma un job CI o uno script systemd può non ereditarlo. In questi casi non basta “funziona da terminale”: devi verificare il contesto reale in cui gira il processo.

Se lavori dietro proxy, controlla il file ~/.m2/settings.xml. È il posto giusto per definire mirror, proxy e credenziali dei repository privati, ma le credenziali non vanno mai lasciate in chiaro in un file condiviso o versionato. Se serve, usa permessi stretti e segreti gestiti fuori dal repository.

Impostazione consigliata per ambienti server

Su server Ubuntu in genere la soluzione più pulita è questa: Java installato da repository di sistema, Maven installato da APT se la versione è sufficiente, oppure pacchetto Apache in /opt con link simbolico stabile e documentazione del percorso. Evita installazioni “miste” e non lasciare più versioni in competizione nello stesso PATH.

Se la macchina è condivisa, preferisci una configurazione che si possa ispezionare in pochi secondi: mvn -version, java -version, path del binario, e file di ambiente usato per esportare M2_HOME. La manutenzione vera, qui, non è installare Maven: è sapere con precisione quale Maven sta eseguendo le build e con quale JVM.

Riepilogo operativo

Se vuoi la via rapida, installa default-jdk e maven con APT, poi verifica con mvn -version e lancia una build minima. Se ti serve una release più nuova o una gestione più controllata, usa il tarball ufficiale Apache in /opt e imposta il PATH in modo esplicito. In entrambi i casi, la vera verifica non è l’installazione in sé, ma la coerenza fra Maven, Java e il contesto in cui verranno eseguite le build.