Apache Maven
POM - модель объекта проекта
Поиск…
Структура POM
Модель объекта проекта является базовой единицей Maven и определяет структуру проекта, зависимости и т. Д.
Следующие минимальные значения для создания POM:
- корень
project
-
modelVersion
- должно быть установлено в4.0.0
-
groupId
- идентификатор группы проекта -
artifactId
- идентификатор артефакта (проекта) -
version
- версия артефакта в указанной группе
groupId
, artifactId
и version
называются координатами Maven и иногда сокращаются с помощью GAV . Они однозначно идентифицируют полученный артефакт проекта в репозитории Maven (и должны делать это во всей вселенной).
Минимальный образец POM выглядит так:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.sample</groupId>
<artifactId>sample-app</artifactId>
<version>0.0.1-SNAPSHOT</version>
</project>
Наследование POM
Наследование является самым большим достоянием POM, в котором можно управлять следующим образом: от супер POM до дочернего POM.
- зависимости
- разработчики и участники
- списки плагинов (включая отчеты)
- плагины с соответствующими идентификаторами
- конфигурация плагина
Следующее позволяет наследовать
<parent>
<groupId>com.sample</groupId>
<artifactId>sample-app-parent</artifactId>
<version>1.0.0</version>
</parent>
Структура 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>
Агрегация POM
Модули многомодульного проекта агрегируются из иерархической структуры.
pom
упаковка pom
должна выглядеть так:
<packaging>pom</packaging>
Ниже представлена структура каталогов проекта:
|-- 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>