Tutti gli articoli di admin

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.

MAVEN TUTORIAL – 2 – INFORMAZIONI GENERALI

In questo articolo continuiamo l’analisi del POM file, cuore di Maven. Dopo aver visto la configurazione minima, che localizza in modo univoco il progetto all’interno di un repository maven, analizziamo altri tag presenti all’interno del file. In particolare analizziamo la sezione dedicata alle informazioni generali.

Il tag name individa il nome del progetto e viene usato nella generazione della documentaziotag ne.

Il tag description fornisce una descrizione base del progetto e viene usato nella generazione della documentazione.

Il tag url indica l’indirizzo web del sito del progetto.

Il tag inceptionYear indica l’anno di avvio del progetto.

Il tag licenses contiene i riferimenti alle licenze specifiche del progetto.

Il tag organization presenta le informazioni della organizzazione responsabile del progetto.

Il tag developer presenta le informazioni che identificano il team di sviluppo.

Il tag contributor presenta le informazioni che identificano eventuali contributori.

Ecco un esempio del file xml

MAVEN TUTORIAL – 1 – CONFIGURAZIONE MINIMA

Oggi vediamo più in dettaglio il cuore di Maven, ovvero quel POM file che descrive il progetto nella sua completezza. POM è l’acronimo di “Project Object Model”. Si tratta di una rappresentazione XML di un progetto Maven descritta in un file chiamato pom.xml.

Cominciamo ad analizzare la configurazione minima del pom file.

Come ogni buon file xml che si rispetti è presente uno schema xsd che stabilisce le regole del file. Lo schema è arrivato alla versione 4.0.0.

I campi groupId, artifactId version identificano univocamente il progetto, agendo da sistema di coordinate.

Il campo groupId individua univocamente un’organizzazione o un progetto. Può assumere qualsiasi valore, ma è buona prassi valorizzarla usando la dot-notation. In tal modo rilasciando il gruppo su un repository, i punti vengono sostituiti con i separatori di directory OS specifici. Nell’esempio riportato il gruppo it.finazzo.progetti >è presente nella directory $M2_REPO/it/finazzo/progetti.

Il campo artifactId individua univocamente il progetto all’interno dell’organizzazione. Di norma coincide con il nome del progetto. Nell’esempio riportato il progetto è presente nella directory $M2_REPO/it/finazzo/progetti/singolo

Il campo version individua la versione del progetto. Nell’esempio riportato il progetto$M2_REPO/it/finazzo/progetti/singolo/1.0.

Il campo packaging individua il formato del package prodotto. Se non è definito il sistema assume jar.

MAVEN TUTORIAL – INTRODUZIONE

Maven è uno strumento completo per la gestione di progetti software Java.

Segue tutte le fasi del progetto in termini di compilazione del codice, distribuzione, documentazione e collaborazione del team di sviluppo, applicando pattern ben collaudati.

Definisce un ciclo di vita standard per il building, il test e il deployment di file di distribuzione Java. Inoltre presenta una serie di plugin per gli aspetti legati alla documentazione e alla reportistica.

Maven descrive il singolo progetto attraverso un file POM (Project Object Model). Il file POM è un file xml che definisce in modo chiaro l’identità e la struttura di un progetto.  E’ diviso in cinque parti:

  1. Relazioni tra POM. In questa sezione è possibile organizzare i progetti attraverso una serie di file POM opportunamente relazionati.
  2. Build settings. In questa sezione sono definite le varie informazioni richieste dal processo di build.
  3. Project information. In questa sezione sono definite le ingformazioni generali del progetto.
  4. Build environment. Questa sezione contiene le varie informazioni relative all’ambiente di build.
  5. Maven environment. Questa sezione contiene i dati per la configurazione dell’ambiente Maven, ad esempio i vari repository cui si appoggi Maven.

Nel momento in cui scrivo Maven ha raggiunto la versione 2.2.1. E’ presente anche una versione 2.0.11, versione stabile che supporta la JDK 1.4.

Aggiornamento al 17/06. Maven ha raggiunto la versione 3.2.1