Ответ
POM (Project Object Model) — это фундаментальный XML-файл pom.xml, который описывает проект, его зависимости, порядок сборки и настройки для Apache Maven.
Базовая структура и ключевые элементы:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<!-- 1. Модель и версия POM -->
<modelVersion>4.0.0</modelVersion>
<!-- 2. Координаты проекта (GAV) - уникальный идентификатор артефакта -->
<groupId>com.example.mycompany</groupId> <!-- Организация/проект -->
<artifactId>my-application</artifactId> <!-- Название модуля -->
<version>1.0.0-SNAPSHOT</version> <!-- Версия -->
<packaging>jar</packaging> <!-- Тип упаковки: jar, war, pom -->
<!-- 3. Метаинформация -->
<name>My Application</name>
<description>A sample Maven project</description>
<!-- 4. Свойства (переменные) -->
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<!-- 5. Зависимости (Dependencies) - ядро POM -->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope> <!-- Область видимости: compile, test, provided, runtime -->
</dependency>
</dependencies>
<!-- 6. Конфигурация сборки (Build) -->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>11</source>
<target>11</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
Назначение основных секций:
<dependencies>: Определяет библиотеки, необходимые для компиляции, тестирования и работы проекта.<build>: Содержит плагины и ресурсы для управления жизненным циклом (компиляция, тестирование, упаковка).<properties>: Централизованное место для объявления версий и параметров, используемых в других частях POM.<parent>и<modules>: Используются для создания многомодульных проектов и наследования конфигурации.