digital-garden/meta/zero/00 Maven.md
Struchkov Mark e9fc372054
All checks were successful
continuous-integration/drone/push Build is passing
Maven
2024-10-30 10:53:33 +03:00

41 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
zero-link:
- "[[00 Java разработка]]"
tags:
- type/zero-link
aliases:
- мавен
- мавеном
- Maven
parents:
- "[[Система сборки]]"
title: Maven
---
Maven — это [[../../../../knowledge/dev/Система сборки|инструмент для автоматизации сборки проектов]], который управляет их жизненным циклом. Жизненный цикл Maven состоит из нескольких фаз, каждая из которых выполняет определенную задачу, необходимую для успешной сборки и управления проектом.
## Основные фазы жизненного цикла
1. **validate** — Проверка корректности проекта и наличия всей необходимой информации.
2. **compile** — Компиляция исходного кода проекта.
3. **test** — Запуск тестов (обычно с использованием JUnit или TestNG) и проверка их успешного выполнения.
4. **package** — Сборка скомпилированного кода и упаковка его, например, в JAR или WAR-файл.
5. **verify** — Проверка собранных артефактов и результатов тестов.
6. **install** — Установка пакета в локальный репозиторий для использования в других проектах.
7. **deploy** — Отправка финального пакета в удаленный репозиторий для использования в других проектах или на сервере.
> [!WARNING]
> Фазы выполняются последовательно, и каждая фаза зависит от предыдущих. Например, при запуске команды `mvn install` Maven автоматически выполнит все предыдущие фазы — от `validate` до `install`.
## Основные команды
- `mvn clean` — Удаляет папку `target`, очищая проект от предыдущих сборок. Полезно использовать перед началом новой сборки, чтобы избежать конфликтов.
- `mvn compile` — Компилирует исходный код проекта. Используется на этапе разработки для проверки, что код компилируется без ошибок.
- `mvn test` — Запускает тесты. Применяется для проверки корректности работы кода после изменений.
- `mvn package` — Упаковывает скомпилированный код в конечный артефакт (обычно JAR или WAR). Используется, когда необходимо подготовить проект для развертывания.
- `mvn install` — Устанавливает артефакт в локальный репозиторий. Применяется для того, чтобы сделать артефакт доступным для других локальных проектов.
- `mvn deploy` — Деплоит артефакт в удаленный репозиторий. Используется для распространения артефакта среди других разработчиков или для развертывания на сервере.
- `mvn site` — Генерирует документацию проекта на основе кода и зависимостей. Полезно для создания отчетов и документации по проекту.
## Дополнительные материалы
- [Параллельная сборка модулей в Maven](../../dev/java/Параллельная%20сборка%20модулей%20в%20Maven.md)
- [Публикация Java приложения в личный Nexus](https://struchkov.dev/blog/ru/java-jar-deploy-to-nexus/)
- [Публикация Java библиотеки в Maven Central](https://struchkov.dev/blog/ru/deploy-to-maven-central/)
- [[../../dev/java/Мультимодульные проекты c Jandex|Мультимодульные проекты c Jandex]]
- [Автоматизация рутины при выпуске релизов с Maven](https://struchkov.dev/blog/ru/release-releases-with-maven/)