Cos è Maven? Maven è un software usato principalmente per la gestione di progetti Java e build automation, ma è utile anche per gestire documentazione, report, dipendenze...
Cosa è importante: pom.xml (POM, Project Object Model): è indispensabile per il corretto utilizzo di Maven. Rappresenta il file di configurazione che contiene i dettagli di un progetto (dipendenze, struttura, plugin,...); Goal: singola funzione che può essere eseguita sul progetto. Plug-in: goal riutilizzabili in tutti i progetti; Repository: directory strutturata destinata alla gestione delle librerie. Un repository può essere locale o remoto. Il repository può essere definito nel pom del progetto o nel settings generale
POM (PROJECT OBJECT MODEL) Tale file è composto da: <modelversion> settiamolo sempre a 4.0.0 <groupid> gruppo associato al progetto. Questo valore è del tutto personale, può essere del tipo «it.jpinup» <artifactid> ID del progetto. Ad esempio «jpinup» <version> Versione del progetto <packaging> il tipo di pacchetto che si vuole avere, i tipi presenti di default sono war, jar o ear ma possiamo averne altri (esb)
POM - Dependency La gestione delle dipendenze è una delle caratteristiche di Maven. Quando si ha bisogno di gestire le dipendenze di un singolo progetto è semplice, ma quando ci sono più moduli il compito di Maven diventa importante. Di seguito il blocco di tag per definire le dipendenze <dependencies> <dependency> <groupid>group</groupid> <artifactid>artifact</artifactid> <version>1.0</version> </dependency> </dependencies>
POM Dependency Management Quando abbiamo tanti moduli da gestire, che sono interdipendenti tra di loro, o che hanno dipendenze in comune, possiamo creare un modulo generico, che contiene la definizione delle dipendenze con la versione. <dependencymanagement> <dependencies> <dependency> <groupid>test</groupid> <artifactid>a</artifactid> <version>1.2</version> </dependency> </dependencymanagement>
POM Scope <dependency> <groupid>test</groupid> <artifactid>a</artifactid> <version>1.2</version> <scope>runtine</scope> </dependency> Per ogni dipendenza è possibile anche definire uno scope: compile (default) le dipendenze sono disponibili in tutti i classpath del progetto provided è simile a compile, ma prevede che a runtime le dipendenze siano rese disponibili dall ambiente di esecuzione runtime le dipendenze sono richieste solo in esecuzione test le dipendenze sono richieste solo per la compilazione e l esecuzione dei test system la dipendenza non viene recuperata tramite repository, ma ne viene esplicitamente dichiarata la posizione locale
Maven Goal Un goal è una singola funzione che può essere eseguita sul progetto. Vediamo i tipi di goal: clean: che permette di cancellare i compilati dal progetto; compile: che permette di compilare i file sorgenti; deploy: che permette di depositare il pacchetto generato nel repository remoto; install: che permette di depositare il pacchetto generato nel repository locale; site: che permette di generare la documentazione del progetto; archetype: che permette di generare la struttura di un progetto a partire da un template.
Maven - istruzioni Possiamo eseguire istruzioni maven da un IDE (tipo Eclipse con RunAS->Maven Build) o direttamente dal prompt dei comandi una volta configurato Maven. Un esempio da prompt mvn clean package cancella i compilati del progetto e ricompila creando il pacchetto desiderato (definito nel pom come packaging)
Maven da Eclipse Dopo aver fatto tasto destro sul progetto -> Run As -> Maven Build. Vediamo le opzioni Goals: i goal già descritti Offline: ignora repository remoti, ma cerca le dipendenze nel locale Skip Tests: evita di eseguire i test, se previsti Resolve Workspace artifacts: se sono presenti dipendenze che sono progetti presenti nel workspace, prende questi in considerazione invece cercarle nei repository
Maven Installazione Dopo aver fatto la panoramica di Maven, passiamo all installazione, facendo riferimento a https://maven.apache.org/install.html 1) Scaricare la versione di Maven desiderata (in Eclipse è già Embedded) 2) Estrarre lo zip 3) Copiare il path fino alla directory bin 4) Variabili d ambiente 1) Windows: Aggiungere questo path nella variabile d ambiente PATH (Start->tasto destro su computer->advanced system settings (impostazioni di sistema avanzate) Environment Variables (Variabili d ambiente)-> su System Variable selezionare PATH-> Edit (Modifica) ->aggiungere il path copiato al punto 3 2) Linux: export PATH=<path copiato>:$path 5) Il repository locale di default è C:\Documents and Settings\${user}\.m2\repository o /home/${user}/.m2/repository
Autore: Ezio Tomassetti