Apache Maven
POM - Modello oggetto progetto
Ricerca…
Struttura POM
Project Object Model è l'unità di base di Maven e definisce la struttura del progetto, le dipendenze, ecc.
Quanto segue è molto minimale per creare un POM:
- radice del
project
-
modelVersion
- dovrebbe essere impostato su4.0.0
-
groupId
: l'ID del gruppo del progetto -
artifactId
: l'ID dell'oggetto (progetto) -
version
- la versione della risorsa sotto il gruppo specificato
groupId
, artifactId
e version
sono chiamate coordinate di Maven e talvolta abbreviate con GAV . Identificano univocamente l'artefatto risultante di un progetto in un repository Maven (e dovrebbero farlo nell'intero universo).
Un POM di esempio minimo assomiglia a:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.sample</groupId>
<artifactId>sample-app</artifactId>
<version>0.0.1-SNAPSHOT</version>
</project>
Eredità POM
L'ereditarietà è la principale risorsa del POM, in cui è possibile gestire quanto segue da super-POM a POM figlio.
- dipendenze
- sviluppatori e contributori
- elenchi di plug-in (inclusi i report)
- esecuzioni di plugin con id corrispondenti
- configurazione del plugin
Quanto segue abilita l'ereditarietà
<parent>
<groupId>com.sample</groupId>
<artifactId>sample-app-parent</artifactId>
<version>1.0.0</version>
</parent>
La struttura POM sembra
<project>
<parent>
<groupId>com.sample</groupId>
<artifactId>sample-app-parent</artifactId>
<version>1.0.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.sample</groupId>
<artifactId>sample-app</artifactId>
<version>0.0.1-SNAPSHOT</version>
</project>
Aggregazione POM
I moduli di un progetto multi-modulo sono aggregati da una struttura gerarchica.
L'imballaggio del pom
dovrebbe essere simile a:
<packaging>pom</packaging>
Quanto segue sarà la struttura della directory del progetto:
|-- sample-app
\ `-- pom.xml
|-- sample-module-1
| `-- pom.xml
|-- sample-module-2
| `-- pom.xml
Root POM:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.sample</groupId>
<artifactId>sample-app</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>sample-module-1</module>
<module>sample-module-2</module>
</modules>
<dependencyManagement>
...
</dependencyManagement>
</project>