Obiettivi e fasi di Maven

1. Panoramica

In questo tutorial, esploreremo diversi cicli di vita di build Maven e le loro fasi.

Discuteremo anche la relazione fondamentale tra obiettivi e fasi.

2. Maven Build Lifecycle

La build Maven segue un ciclo di vita specifico per implementare e distribuire il progetto di destinazione.

Ci sono tre cicli di vita incorporati:

  • impostazione predefinita: il ciclo di vita principale poiché è responsabile della distribuzione del progetto
  • clean: per pulire il progetto e rimuovere tutti i file generati dalla build precedente
  • site: per creare la documentazione del sito del progetto

Ogni ciclo di vita è costituito da una sequenza di fasi. Il ciclo di vita della build predefinito è costituito da 23 fasi poiché è il ciclo di vita della build principale.

D'altra parte, il ciclo di vita pulito è composto da 3 fasi, mentre il ciclo di vita del sito è composto da 4 fasi.

3. Fase Maven

Una fase Maven rappresenta una fase del ciclo di vita della build Maven . Ogni fase è responsabile di un'attività specifica.

Ecco alcune delle fasi più importanti nel ciclo di vita della build predefinito :

  • validate: controlla se tutte le informazioni necessarie per la build sono disponibili
  • compile: compila il codice sorgente
  • test-compile: compila il codice sorgente del test
  • test: esegue unit test
  • pacchetto: pacchetto del codice sorgente compilato nel formato distribuibile (jar, war, ...)
  • test di integrazione: elabora e distribuisci il pacchetto, se necessario, per eseguire i test di integrazione
  • installa: installa il pacchetto in un repository locale
  • deploy: copia il pacchetto nel repository remoto

Per l'elenco completo delle fasi di ogni ciclo di vita, consulta il riferimento Maven.

Le fasi vengono eseguite in un ordine specifico. Ciò significa che se eseguiamo una fase specifica utilizzando il comando:

mvn 

Questo non eseguirà solo la fase specificata ma anche tutte le fasi precedenti.

Ad esempio, se eseguiamo la fase di distribuzione , che è l'ultima fase del ciclo di vita della build predefinito, verranno eseguite anche tutte le fasi prima della fase di distribuzione , che è l'intero ciclo di vita predefinito :

mvn deploy

4. Maven Goal

Ogni fase è una sequenza di obiettivi e ogni obiettivo è responsabile di un'attività specifica.

Quando eseguiamo una fase, tutti gli obiettivi legati a questa fase vengono eseguiti in ordine.

Ecco alcune delle fasi e degli obiettivi predefiniti ad esse associati:

  • compiler: compile - l' obiettivo di compilazione del plugin del compilatore è legato alla fase di compilazione
  • compilatore: testCompile è associato alla fase di compilazione test
  • infallibile: il test è vincolato alla fase di test
  • installazione: l'installazione è destinata alla fase di installazione
  • jar: jar and war: war è vincolato alla fase di pacchetto

Possiamo elencare tutti gli obiettivi legati a una fase specifica e i loro plugin utilizzando il comando:

mvn help:describe -Dcmd=PHASENAME

Ad esempio, per elencare tutti gli obiettivi legati alla fase di compilazione , possiamo eseguire:

mvn help:describe -Dcmd=compile

E ottieni l'output di esempio:

compile' is a phase corresponding to this plugin: org.apache.maven.plugins:maven-compiler-plugin:3.1:compile

Il che, come accennato in precedenza, significa che l' obiettivo di compilazione dal plug-in del compilatore è legato alla fase di compilazione .

5. Plugin Maven

Un plugin Maven è un gruppo di obiettivi. Tuttavia, questi obiettivi non sono necessariamente tutti legati alla stessa fase.

Ad esempio, ecco una semplice configurazione del plug-in Maven Failsafe che è responsabile dell'esecuzione dei test di integrazione:

   maven-failsafe-plugin ${maven.failsafe.version}    integration-test verify      

Come possiamo vedere, il plugin Failsafe ha due obiettivi principali configurati qui:

  • test di integrazione : esegue i test di integrazione
  • verifica : verifica tutti i test di integrazione superati

Possiamo usare il seguente comando per elencare tutti gli obiettivi in ​​un plugin specifico :

mvn :help

Ad esempio, per elencare tutti gli obiettivi nel plug-in Failsafe:

mvn failsafe:help

E il risultato di questo sarà:

This plugin has 3 goals: failsafe:help Display help information on maven-failsafe-plugin. Call mvn failsafe:help -Ddetail=true -Dgoal= to display parameter details. failsafe:integration-test Run integration tests using Surefire. failsafe:verify Verify integration tests ran using Surefire.

Per eseguire un obiettivo specifico, senza eseguire tutta la sua fase (e le fasi precedenti) possiamo utilizzare il comando:

mvn :

Ad esempio, per eseguire l' obiettivo del test di integrazione dal plug-in Failsafe, è necessario eseguire:

mvn failsafe:integration-test

6. Creazione di un progetto Maven

Per costruire un progetto Maven, dobbiamo eseguire uno dei cicli di vita eseguendo una delle loro fasi:

mvn deploy

Questo eseguirà l'intero ciclo di vita predefinito . In alternativa, possiamo fermarci alla fase di installazione :

mvn install

Ma di solito useremo il comando:

mvn clean install

Per pulire il progetto prima, eseguendo il ciclo di vita pulito , prima della nuova build.

Possiamo anche eseguire solo un obiettivo specifico del plugin:

mvn compiler:compile

Nota che se provassimo a costruire un progetto Maven senza specificare una fase o un obiettivo, ciò causerà l'errore:

[ERROR] No goals have been specified for this build. You must specify a valid lifecycle phase or a goal

7. Conclusione

In questo articolo, abbiamo discusso dei cicli di vita della build di Maven e della relazione tra le fasi e gli obiettivi di Maven.