Apache Maven
POM - Modèle d'objet de projet
Recherche…
Structure POM
Project Object Model est l'unité de base de Maven et définit la structure du projet, les dépendances, etc.
Les éléments suivants sont très minimes pour créer un POM:
- racine du
project
-
modelVersion
- devrait être mis à4.0.0
-
groupId
- l'ID du groupe du projet -
artifactId
- l'ID de l'artefact (projet) -
version
- la version de l'artefact sous le groupe spécifié
groupId
, artifactId
et version
sont appelés coordonnées Maven et parfois abrégés avec GAV . Ils identifient de manière unique l'artefact résultant d'un projet dans un référentiel Maven (et devraient le faire dans tout l'univers).
Un exemple de POM minimal ressemble à:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.sample</groupId>
<artifactId>sample-app</artifactId>
<version>0.0.1-SNAPSHOT</version>
</project>
Héritage POM
L'héritage est le principal atout du POM, où les éléments suivants peuvent être gérés, du super POM au POM enfant.
- dépendances
- développeurs et contributeurs
- listes de plugins (y compris les rapports)
- exécutions de plugin avec les identifiants correspondants
- configuration du plugin
Ce qui suit permet l'héritage
<parent>
<groupId>com.sample</groupId>
<artifactId>sample-app-parent</artifactId>
<version>1.0.0</version>
</parent>
La structure de POM ressemble à
<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>
Agrégation POM
Les modules d'un projet multi-modules sont agrégés à partir d'une structure hiérarchique.
Le pom
racine devrait ressembler à:
<packaging>pom</packaging>
La structure de répertoire du projet sera la suivante:
|-- sample-app
\ `-- pom.xml
|-- sample-module-1
| `-- pom.xml
|-- sample-module-2
| `-- pom.xml
POM racine:
<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>