Archivi categoria: DOCUMENTAZIONE

La categoria contiene tutta la documentazione disponibile per la consultazione

MAVEN TUTORIAL – 7 – GESTIRE UN REPOSITORY

Nel processo di gestione del processo Maven si basa sul concetto di repository. Per repository si intende un contenitore in cui sono presenti tutti gli artifatti utili alla gestione del progetto, opportunamente localizzati.

Il repository centrale di Maven è disponibile all’url http://repo1.maven.org/maven2, come definito nel file settings.xml.

Maven crea un repository in locale sotto la home dell’utente al fine di evitare accessi alla rete inutili. Nel processo di gestione del progetto Maven verifica in locale l’esistenza della libreria desiderata e in caso negativo interroga il repository centrale.

E’ possibile aggiungere altri repository, agendo sul file settings.xml oppure sul pom file del progetto.

La gestione di nuovi repository si rende necessaria quando occorre integrare librerie sviluppate internamente alla nostra organizzazione o ad oggi non ancora supportate dalla comunity di Maven.

Chi scrive usa artifactory, un ottimo repository open source realizzato da JFrog Ltd.

Sostanzialmente è una web application che implementa tutti i servizi necessari per la gestione di un repository Maven, dalla gestione delle librerie agli snapshot, dalla possibilità di importare e esportare i repository o solo alcuni rami di libreria.

Per l’installazione e l’utilizzo rimando al sito di artifactory, dove c’è un ottimo manuale wiki.

Per integrarlo all’interno del nostro progetto è sufficiente aggiungere nel pom file la sezione repositories

 Con questo articolo si chiude la presentazione di Maven. Per approfondimenti rimando al sito di Maven e all’ottimo tutorialpresente sul sito di Mokabyte.

MAVEN TUTORIAL – 6 – DIRETTIVE PRINCIPALI

Dopo aver visto le componenti principali del file pom analizziamo le direttive più comuni. Maven funziona a linea di comando. Il comando principale è mvn seguito da una serie di parametri, legati ai plugin agganciati nel file pom. Il comando mvn deve essere lanciato nella directory dove è presente il pom file, salvo che si voglia creare un progetto ex novo.

  • mvn –version

permette di inidividuare la versione di maven utilizzata, comodo per verificare se l’installazione è andata a buon fine.

  • mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

crea una directory di nome my-app con all’interno il pom file base, l’alberatura del progetto e degli unit test.

  • mvn eclipse:eclipse

crea i file di progetto per consentire l’import all’interno di eclipse

  • mvn eclipse:clean

rimuove i file di progetto di eclipse

  • mvn compile

genera tutti i file .class secondo l’alberatura del progetto

  • mvn clean

elimina i file generati

  • mvn package

assembla il progetto nel formato desiderato

E’ importante notare che è possibile lanciare in sequenza i comandi

  • mvn clean compile package

MAVEN TUTORIAL – 5 – SYSTEM INTEGRATION

Il pom file permette di integrare diversi sistemi all’interno del nostro progetto.

E’ possibile integrare un sistema per la gestione del tracking dei difetti. Tramite il tag issueManagement è possibile inserire le coordinate del sistema di tracking.

E’ possibile integrare un sistema per la Continuous Integration

Un sistema per la gestione di una mailing list

Un sistema per il software configuration come svn

E’ possibile aggiungere altri repository, oltre quello previsto dal sistema Maven http://repo1.maven.org/maven2/

Il repository è il sistema che contiene tutti gli artifatti necessari per la gestione del progetto. Possono essere aggiunti altri repository, che contengono libreria necessarie per la gestione del progetto.

MAVEN TUTORIAL – 4 – BUILD

Oggi analizziamo la sezione dedicata al build, ovvero l’insieme di tutte le informazioni riguardanti la struttura del progetto, dei plugin e dei report.

La sezione base presenta la seguente struttura:

  •  Il tag defaultGoal indica l’obiettivo che deve eseguire Maven una volta lanciato. Normalmente viene indicato tramite linea di comando
  • Il tag directory indica dove viene salvato il prodotto di Maven
  • il tag flnalName indica come viene nominato il prodotto di Maven
  • Il tag filter individua i file filter. Sono dei file che contengono variabili che vengono applicate durante la fase di compilazione e packaging.

Altra sezione fondamentale è quella dedicata alle risorse, ovvero quei file che non vengono compilati ma inglobati nel bundle generato.

  • Il tag filtering indica se applicare le variabil contenute nei file filtri.
  • Il taf directory indica dove si trovano le risorse
  • Il tag include permette di selezionare alcune risorse, specificando un pattern
  • Il tag exclude permette di escludere alcune risorse, specificando un pattern

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