Maven è un popolare strumento di compilazione open source che Apache ha sviluppato per creare, pubblicare e distribuire diversi progetti. Maven è scritto in Java e viene utilizzato per creare anche progetti scritti in C#, Scala, Ruby e altri ancora.
Basato su Project Object Model (POM), questo strumento viene principalmente utilizzato per progetti basati su Java. Ogni progetto Java richiede determinate dipendenze, che vengono scaricate automaticamente durante l'esecuzione di una build Maven. Questo semplifica le attività quotidiane per gli sviluppatori contribuendo ad una maggiore produttività con i loro progetti.
Se desideri scaricare le dipendenze, non è più necessario visitare il sito Web ufficiale di ciascun software. Può essere fatto rapidamente visitando il repository centralizzato maven.
Prima di vedere cos’è un repository Maven vorrei aprire una piccola parentesi specificando che cos’è uno strumento di compilazione. Lo strumento di compilazione si occupa di creare le applicazioni partendo dal codice sorgente, in sostanza compila e impacchetta il codice in un formato eseguibile.
Fatta questa premessa possiamo dire che un repository Maven è una directory che contiene i file compilati con i relativi metadati. I metadati si riferiscono ai file POM relativi a ciascun progetto. Questi metadati consentono a Maven di scaricare le dipendenze.
Maven dispone tre tipi di repository:
1. Repository locale:
Il repository locale si riferisce alla macchina dello sviluppatore, che è dove viene salvato tutto il materiale del progetto. Questo repository contiene tutti i jar delle dipendenze.
2. Repository remoto:
Il repository remoto si riferisce al repository presente su un server Web, che viene utilizzato quando Maven deve scaricare le dipendenze. Questo repository funziona allo stesso modo del repository centrale. Ogni volta che viene richiesto qualcosa dal repository remoto, viene scaricato nel repository locale per essere utilizzato.
3. Repository centrale:
Il repository centrale si riferisce alla comunità Maven che entra in azione quando si ha bisogno di determinate dipendenze e non sono presenti nel repository locale. Generalmente Maven tenta sempre di scaricare le dipendenze da questo quando necessario.
Project Object Model (POM)
- Project Object Model (POM) si riferisce ai file XML con tutte le informazioni riguardanti i dettagli del progetto e della configurazione.
- Contiene la descrizione del progetto, nonché i dettagli relativi al controllo delle versioni e alla gestione della configurazione del progetto.
- Il file XML si trova nella directory home del progetto. Maven cerca il POM nella directory corrente quando è necessario eseguire una determinata attività.
Dipendenze e repository
- Le dipendenze si riferiscono alle librerie Java necessarie per il progetto. I repository si riferiscono alle directory dei file JAR compressi.
- Se le dipendenze non sono presenti nel repository locale, Maven le scarica da un repository centrale e le memorizza nel repository locale.
Cicli di vita, fasi e obiettivi
- Consiste in una sequenza di fasi di build e ogni fase di build consiste in una serie di obiettivi.
- Ogni obiettivo è responsabile di un compito particolare.
- Quando un processo viene eseguito, vengono compilati anche tutti gli step relativi a quella fase e ai suoi plugin.
Profili
- Si riferisce all'insieme di valori di configurazione richiesti per creare un progetto utilizzando diverse configurazioni.
- Diversi profili di build vengono aggiunti ai file POM quando si abilitano build diverse.
- Un profilo di build aiuta a personalizzare la singola build per diversi ambienti.
Plugin
- Un plug-in Maven si riferisce al gruppo di obiettivi che possono trovarsi o meno nella stessa fase.
- I plugin vengono utilizzati per eseguire un obiettivo specifico.
- Maven ha i suoi plugin standard che possono essere utilizzati. Se lo si desidera, gli utenti possono anche implementare il proprio in Java.
-Il primo passaggio si riferisce alla configurazione di Maven, che è memorizzato in un pom.xml.file
-Il file POM include tutte le configurazioni di cui Maven ha bisogno. Il secondo passo è scaricare le dipendenze definite in pom.xml nel repository locale dal repository centrale
-Dopo che l'utente inizia a lavorare in Maven, lo strumento fornisce varie impostazioni predefinite, quindi non è necessario aggiungere tutte le configurazioni in pom.xml
Quando costruiamo un progetto Maven, eseguiamo una serie di attività chiaramente definite in base alla configurazione del progetto sul pom.xml e alle opzioni passate della riga di comando. Questo set standard di attività crea il ciclo di vita della build Maven.
Il ciclo di vita della build Maven quindi è una sequenza di passaggi che devono essere seguiti per compilare e distribuire un progetto.
Di seguito sono riportate le fasi del ciclo di vita della build:
validate - verifica se tutte le informazioni per compilare il progetto sono disponibili.
compile - compila il codice sorgente del progetto.
test - verifica il codice sorgente compilato utilizzando un framework di unit test adeguato. Per esempio JUnit.
package - prendi il codice compilato e crea il pacchetto/eseguibile nel suo formato distribuibile, come un JAR.
verify - esegue controlli sui risultati dei test di integrazione per garantire che i criteri di qualità siano soddisfatti.
install - installa il pacchetto nel repository locale, per utilizzarlo come dipendenza in altri progetti in locale.
deploy - eseguito nell'ambiente di compilazione, copia il pacchetto finale nel repository remoto per la condivisione con altri sviluppatori e progetti.
Inoltre esistono tre tipi di cicli di vita standard che sono:
1. Default:
Il ciclo di vita predefinito o build è il ciclo principale responsabile della creazione dell'applicazione. Ci sono 21 diverse fasi in questo ciclo di vita primario, a partire dal processo di convalida fino alla fase di implementazione.
2. Clean:
Il ciclo di vita clean gestisce la pulizia del progetto. La fase di pulizia consiste nei seguenti tre passaggi:
- pre-clean
- clean
- post-clean
Il comando mvn post-clean viene utilizzato per richiamare le fasi del ciclo di vita clean in Maven.
3. Site:
Il plug-in site di maven gestisce la documentazione del progetto, in sostanza genera un sito di documentazione per il progetto per creare report, distribuire siti, ecc.
Questa fase si divide in quattro diverse sottofasi:
- pre-site
- site
- post-site
- deploy (Distribuzione)
Infine, il sito creato contiene il report del progetto.
Le fasi di compilazione vengono eseguite in sequenza. Quando eseguiamo un comando maven build, specifichiamo la fase da eseguire. Vengono eseguite anche tutte le fasi di build maven che precedono la fase specificata. Ad esempio, se eseguiamo mvn package, eseguirà le fasi di convalida, compilazione, test e package del progetto.
Abbiamo esplorato il motivo per cui viene utilizzato Maven, i concetti fondamentali, l'architettura e il suo ciclo di vita. Se vuoi approfondire l’argomento puoi fare riferimento alla guida ufficiale.
Vedi anche Apache Maven: guida rapida all'utlizzo.