Organizziamo i nostri progetti java con Maven ed Eclipse in modo accessibile

Tempo di lettura: 6 minuti

Abbiamo visto nell’articolo Guida introduttiva all’IDE Eclipse, per programmare con Java in modo accessibile, quali strategie adottare per programmare, senza problemi, con java tramite l’IDE Eclipse, di cui fornivamo un link per il download della versione dedicata a java enterprise.
Successivamente, nell’articolo “Importare manualmente una libreria java in Eclipse“, vi ho spiegato come includere una libreria, file jar, nei vostri progetti. Macchinoso ma efficace.
Ora vedremo una modalità molto potente e ampiamente diffusa per creare e gestire i nostri progetti.
Impareremo ad utilizzare Maven, un prodotto della Apache Software Foundation, uno strumento di build automation utilizzato prevalentemente nella gestione di progetti Java.
Come sempre il focus dei miei articoli è orientato all’accessibilità, non intende replicare nozioni ampiamente espresse da siti specialistici, per approfondimenti rimando ai link che inserirò in coda a questo articolo.

Perchè Maven

Sviluppavo in java già all’inizio degli anni 2000. In quegli anni la gestione dei progetti era manuale, quando si era fortunati era possibile utilizzare strumenti come Ant, ma devo dire il vero, non mi ci sono mai trovato troppo bene.
Ogni volta che si dovevano utilizzare delle librerie esterne, di terze parti, bisognava ricercare la versione corretta, trovare un link sicuro da cui scaricarla, vedere se era compatibile con la nostra versione di java.
Per non parlare della definizione della struttura dei progetti, spesso framework avanzati richiedono strutture complesse, tante configurazioni e profili per l’esecuzione delle applicazioni create.
Maven semplifica tutto ciò e molto altro e oltre a snellire di parecchio il flusso di lavoro di uno sviluppatore, ci aiuta notevolmente a commettere pochi errori, obbligandoci a fare le cose per bene.

Eclipse e Maven

Fortunatamente, il nostro IDE preferito, Eclipse, integra nativamente Maven. Basta prelevare la versione di Eclipse dedicata a java Enterprise, la stessa che vi ho consigliato negli scorsi articoli.
Questa versione è provvista del plugin “m2” per Maven, potremo così gestire tutte le fasi del progetto direttamente da Eclipse.
In alternativa, potremo installare Maven a livello di sistema operativo, settando le variabili di ambiente e utilizzandolo da prompt dei comandi, ma in questo articolo non parleremo di questa possibilità, nonostante sia anche essa un ottima scelta di utilizzo, dipende dalle abitudini.

Ma prima un minimo di teoria

L’orchestratore dei progetti creati con Maven è un file xml, il suo nome è “pom” (project object model). Questo è il file che viene interpretato dal motore di Maven. Tale file viene utilizzato dallo sviluppatore per definire numerose impostazioni e proprietà.
Possiamo indicare il nome del progetto, con quale versione di java intendiamo compilarlo, quali sono le librerie che vogliamo importare, quale il profilo di esecuzione del nostro programma e tanto altro.
Le librerie interessate verranno scaricate automaticamente dal repository maven, basta che nel pom.xml sia dichiarato di volerle importare nel proprio progetto.
Essendo il pom, un file testuale, xml appunto, ci riesce molto semplice governarlo con lo screen reader. Come sappiamo bene, tutto ciò che è testuale è nostro amico, è accessibile.
Posso assolutamente affermare con certezza che l’impiego combinato di Eclipse, Maven e java ci può permettere di portare avanti il nostro lavoro in modo profiquo e rapido, nonostante la disabilità visiva e la mancanza totale di un feedback visivo.

Mettiamoci al lavoro

Vediamo, step by step, come creare un progetto Maven con Eclipse:

  • apriamo l’IDE Eclipse;
  • creiamo un nuovo progetto premendo la combinazione “ctrl + n”;
  • nella schermata che appare, è presente un campo di ricerca. Premiamo “shift + tab” per raggiungerlo. Scriviamo al suo interno “maven”. Premiamo “tab”. Atterreremo così su un albero in cui selezionare “create a maven project”. Premiamo “invio” oppure “alt + n”;
  • apparirà così una nuova schermata del wizard di creazione del progetto. Ci viene data la possibilità di selezionare diverse opzioni del nostro workspace, ma possiamo tranquillamente passare alla prossima schermata senza cambiare alcuna impostazione. Premiamo quindi “alt + n”;
  • altra schermata del wizard, qui ci verrà chiesto di selezionare un archetype. L’archetype, in questo caso, rappresenta un template con il quale verrà creato il nostro progetto. Potremo scegliere tra diversi archetype presenti di default. Ne potremo aggiungere di nuovi, forniti da librerie di terze parti ma magari non presenti di default. Nel caso di questo nostro esempio selezioniamo l’archetype “maven-archetype-quickstart”. Per effettuare la selezione è presente il solito campo di ricerca e il consueto elenco dei risultati filtrati. Una volta selezionato, premiamo “invio” o “alt + n”;
  • siamo ora difronte all’ultima schermata. Ci vengono richiesti i parametri per il nostro progetto. Specifichiamo un “groupId”, che identifica in modo univoco l’id del gruppo, bisogna scriverlo usando la dichiarazione di package, ad esempio “it.corso.programmazione.java”. Definiamo poi un “artifact id”, un id che identifica in modo univoco il nostro progetto, possiamo mettere “helloworld”. Non modifichiamo il resto delle opzioni e premiamo “alt + f”.

A questo punto si chiuderà la schermata del wizard per la creazione di progetto e il focus su Eclipse tornerà al project explorer. Non dovesse accadere, sapete come portare il focus nella view specificata.
Andando ad analizzare la struttura del progetto, navigando l’albero, ci accorgeremo che è stata creata la cartella “src/main/java”. Abituiamoci a conoscere questa suddivisione in cartelle, perchè è quella standard usando Maven.
Sotto la cartella java, è presente il package “it.corso.programmazione.java.helloworld”.
In questo percorso è poi presente la classe “App.java”, tale classe contiene già un main pronto per l’uso.
Nota: a seconda delle versioni di Eclipse e della versione della jdk, durante la fase di wizard per la creazione del progetto, potreste aver scelto di creare il file “module-info.java”. Tale file è necessario se si decide di sviluppare il proprio progetto con l’approccio a moduli, introdotto da Java 9. È una scelta libera, ma da scegliere con cognizione di causa, per essere poi correttamente gestita.

Uno sguardo al POM

A livello della cartella src, non al suo interno, è presente il già citato pom.xml, andiamo ad analizzarlo.
Per farlo, una volta individuato il file, premiamo “shift + f10”, si aprirà un menù contestuale, individuiamo la voce “open with” e nel sottomenù selezioniamo “generic text editor”. È necessario fare questo passaggio, una sola volta, per dire all’IDE di usare l’editor di testo generico, quello più accessibile. Questa scelta verrà poi ricordata per il progetto in oggetto.
Da un primo sguardo al pom.xml, ritroveremo alcune delle impostazioni che avevamo settato in fase di creazione del progetto.
È importante prendere dimestichezza con questo file xml, in modo da conoscerlo e riuscire a modificarlo agevolmente.
È presente il tag:

<properties>

andiamo ad aggiungere al suo interno le seguenti righe:

<maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>

Questi due tag danno istruzioni precise a Maven, riferite alla versione con cui compilare i nostri sorgenti. Ho scelto per il nostro esempio la versione 11 di java, dato che tutti i nostri articoli fanno riferimento a questa release. Sono due tag importanti, evitano, in certi casi, diversi problemi fastidiosi in compilazione.

Aggiungere una dipendenza

In questo articolo non potremo vedere tutti gli aspetti del pom, ma ci soffermeremo all’interno del tag

<dependences>

Infatti, al suo interno, potremo aggiungere quanti tag

<dependency>

desideriamo. Ogni dependency corrisponde ad una libreria che ci interessa includere. Tale libreria avrà un suo tag dependency che la identifica e che permette a Maven di scaricarla dal repository centrale.
Volessimo, per esempio, includere una libreria per lavorare con i pdf, dovremmo prima cercarla sul sito ufficiale “maven Repository“, copiare l’xml della dichiarazione dependency e incollarla nel nostro pom.
Ad esempio:

 <!-- https://mvnrepository.com/artifact/org.apache.pdfbox/pdfbox -->
<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>pdfbox</artifactId>
    <version>2.0.18</version>
</dependency> 

Aggiunta una o più dipendenze, non ci resta quindi che spostarci sul project explorer in Eclipse, posizionarci sul pom.xml, premere “shift + f10”, trovare la voce “maven” nel menù contestuale e premere sulla voce del sotto menù “update project”. Apparirà una finestra nella quale dovremo posizionarci su “ok” e premere “invio”.
Il progetto sarà ripulito e verranno scaricate le linbrerie indicate. Al termine della procedura saranno pronte per l’uso.

Esecuzione del nostro programma

Questo è un programma molto semplice, non presenta configurazioni avanzate o “goal” specifici per l’esecuzione. Quindi daremo solo un saggio di come usare maven per generare un file “jar” e per vedere come eseguirlo.
Non c’è una regola standard, ogni progetto maven può fare riferimento ad una tipologia di esecuzione diversa.
Spostiamoci sul file pom.xml, premiamo “shift + f10” e cerchiamo la voce “run as”, selezioniamo la voce del sotto menù “maven install”.
Partirà il processo di compilazione, lo potremo leggere nella view “console”, giusto per verificare che non termini con errori.
A questo punto nella cartella target, sempre a livello di src, verranno inseriti i file compilati e il nostro file jar, risultato della compilazione.
Il file jar conterrà tutte le classi del nostro progetto e sarà pronto per la distribuzione.
Per provare ad eseguirlo, spostiamoci nel prompt dei comandi (fuori da Eclipse) nella cartella target e diamo il comando:

java -cp helloworld-0.0.1-SNAPSHOT.jar it.corso.programmazione.java.helloworld.App

Se invece vogliamo provare a eseguire il nostro programma internamente ad Eclipse, come uno java classico, basta che ci spostiamo nella classe App.java e premiamo la consueta combinazione “ctrl + f11”. Nella console potremo leggere il messaggio di output.
Vedremo nel prompt di windows il messaggio “Hello World!”.
Tornando a Maven, sono presenti altre modalità di compilazione, da utilizzare in base alla tipologia di distribuzione che avrà il nostro progetto.

In conclusione

Se eravate abituati a usare Eclipse senza Maven, introdurre questo nuovo approccio non dovrebbe essere faticoso. Una volta creato il progetto con Maven potrete continuare a sviluppare nello stesso modo di prima, con in aggiunta le potenzialità di questo strumento. Vi accorgerete della sua utilità su progetti che prevedono l’impiego di più librerie, la distribuzione su diversi sistemi, la necessità di scrivere dei test di unità o di introdurre framework come Spring o Open Java FX.

materiale proposto

Pubblicato da

Alessandro Albano

Analista programmatore, formatore e tiflologo.