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.
1 2 3 4 5 6 7 8 9 10 |
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>it.finazzo.progetti</groupId> <artifactId>singolo</artifactId> <version>1.0</version> <packaging>war</packaging> </project> |
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 e 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.