MAVEN TUTORIAL – 3 – GESTIONE DELLE DIPENDENZE

Per la gestione del progetto Maven applica i concetti di dipendenza, ereditarietà e aggregazione.

La dipendenza viene gestita tramite il tag dependency. Tale tag permette di individuare gli elementi necessari per la gestione del progetto.

La tripletta groupId, artifactId e version identifica univocamente la libreria all’interno del repository Maven.

Il tag type individua il formato della libreria, se non è indicato vale jar.

Il tag scope invidua per quale fase del progettoè necessaria la libreria. Può assumere vari valori:

  • compile –> indica che la libreria è necessaria per la compilazione. E’ il valore di default qualora non venga indicato.
  • provided –> indica che la libreria è necessaria per la compilazione, ma che viene fornita dalla JDK o dal container.
  • runtime –> indica che la libreria non è necessaria per la compilazione, ma solo per l’esecuzione.
  • test –> indica che la libreria è usata solo in fase di testing.
  • system –> è simile al provided, ma in tal caso è compito dell’utente indicare dove reperire la libreria tramite il tag systemPath

Il tag optional indica che la libreria è opzionale qualora si volesse aggiungere in un nuovo progetto la dipendenza da questo progetto.

Tramite il tag exclusion è possibile rimuovere delle specifiche dipendenze dagli artifatti aggiunti.

L’ereditarietà permette di creare nuovi POM file che ereditano le relazioni definite in un super POM. Il tutto viene gestito tramite il tag parent. Ecco un esempio.

E’ possibile anche definire un progetto come aggregato di altri progetti. L’aggregazione viene gestita dal tag module. In tal modo è possibile tramite un solo pom gestire il ciclo di vita di più sottoprogetti.