Apache Maven
POM - Project Object Model
Szukaj…
Struktura POM
Project Object Model jest podstawową jednostką Maven i określa strukturę projektu, zależności itp.
Poniższe elementy są bardzo minimalne, aby utworzyć POM:
- katalog główny
project
-
modelVersion
- należy ustawić na4.0.0
-
groupId
- identyfikator grupy projektu -
artifactId
- identyfikator artefaktu (projektu) -
version
- wersja artefaktu w ramach określonej grupy
groupId
, artifactId
i version
nazywane są współrzędne Maven i czasami skracane z WDB. Jednoznacznie identyfikują powstały artefakt projektu w repozytorium Maven (i powinni to zrobić w całym wszechświecie).
Minimalna próbka POM wygląda następująco:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.sample</groupId>
<artifactId>sample-app</artifactId>
<version>0.0.1-SNAPSHOT</version>
</project>
Dziedziczenie POM
Dziedziczenie jest największym atutem POM, w którym można zarządzać następującymi elementami: od super POM do potomnego POM.
- zależności
- programiści i współpracownicy
- listy wtyczek (w tym raporty)
- wykonanie wtyczki z pasującymi identyfikatorami
- konfiguracja wtyczki
Następujące umożliwia dziedziczenie
<parent>
<groupId>com.sample</groupId>
<artifactId>sample-app-parent</artifactId>
<version>1.0.0</version>
</parent>
Wygląda struktura POM
<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>
Agregacja POM
Moduły projektu wielomodułowego są agregowane ze struktury hierarchicznej.
Opakowanie pom
root powinno wyglądać następująco:
<packaging>pom</packaging>
Poniżej będzie struktura katalogów projektu:
|-- sample-app
\ `-- pom.xml
|-- sample-module-1
| `-- pom.xml
|-- sample-module-2
| `-- pom.xml
Korzeń 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>