Apache Maven
POM - Projectobjectmodel
Zoeken…
POM-structuur
Project Object Model is de basiseenheid van Maven en definieert de projectstructuur, afhankelijkheden, etc.
Het volgende is zeer minimaal om een POM te maken:
-
project
root -
modelVersion
- moet worden ingesteld op4.0.0
-
groupId
- de ID van de projectgroep -
artifactId
- de ID van het artefact (project) -
version
- de versie van het artefact onder de opgegeven groep
groupId
, artifactId
en version
worden Maven-coördinaten genoemd en soms afgekort met GAV . Ze identificeren op unieke wijze het resulterende artefact van een project in een Maven-repository (en zouden dat in het hele universum moeten doen).
Een minimale voorbeeld POM ziet eruit als:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.sample</groupId>
<artifactId>sample-app</artifactId>
<version>0.0.1-SNAPSHOT</version>
</project>
Overerving van POM
Overerving is het grootste voordeel van de POM, waarbij het volgende kan worden beheerd van super POM tot onderliggende POM.
- afhankelijkheden
- ontwikkelaars en medewerkers
- plug-in lijsten (inclusief rapporten)
- plug-in uitvoeringen met overeenkomende id's
- plug-in configuratie
Het volgende schakelt de overerving in
<parent>
<groupId>com.sample</groupId>
<artifactId>sample-app-parent</artifactId>
<version>1.0.0</version>
</parent>
POM-structuur ziet eruit
<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>
POM-aggregatie
De modules van een multimodule-project worden geaggregeerd vanuit een hiërarchische structuur.
De root pom
pakking moet er als volgt uitzien:
<packaging>pom</packaging>
Het volgende zal de mappenstructuur van het project zijn:
|-- 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>