Maven
Что такое Maven?
Maven написал Jason van Zyl. Apache Maven 1.0 вышел в 2004 году. Список проекта лежит в файле pom.xml. Это имя значит Project Object Model. Maven Central — общее место библиотек. mvn compile проверяет код и переводит его в файл класса. mvn package выдаёт готовый архив. Язык Java говорит правило. Maven выстраивает работу по этому правилу. Gradle тоже собирает Java, но список пишет скриптом. Maven хранит список в pom.xml в фиксированном виде.
Для чего нужен Maven?
Maven нужен, чтобы собирать проект Java одними и теми же шагами и приносить библиотеку из одного списка.
- Перевести код в файл класса
- Открыть тест через mvn test
- Записать библиотеку в pom.xml
- Выдать готовый архив jar
Что можно делать с Maven?
Через Maven скачивают зависимость, запускают тест и собирают архив. Сам он программу на Java не пишет. Если версия Java неверна, сборка останавливается. Незнакомая библиотека входит в твой проект. Файл Gradle Maven не читает.
Сложно ли освоить Maven?
Одна команда в пустом проекте легка. Трудность в версии и в хранилище. Две библиотеки могут хотеть одно имя в разной версии. Когда pom.xml растёт, теряется, какая строка что приносит. Локальное хранилище держит старый файл и может спрятать новую загрузку. Если сети нет, пакет из Central не приходит.
Плюсы и ограничения
Плюс: шаги знакомые, список в одном файле, та же сборка повторяется на другой машине. Ограничение: pom.xml становится длинным. Maven — не Java и не Gradle.
Основные понятия
pom.xml — список. Зависимость — библиотека, которую приносят. Цель — имя одного шага сборки.
- compile переводит код
- test запускает проверку
- package выдаёт архив
- Maven Central — общее место
Короткий пример
Эта команда упаковывает проект Java в текущей папке. Сам код она не пишет.
mvn package
Частые вопросы
- Maven и Java — одно и то же? Нет. Java выполняет язык. Maven собирает проект и приносит библиотеку.
- Maven и Gradle — одно и то же? Нет. Оба могут собирать Java. Maven хранит список в pom.xml. Gradle пишет список скриптом.
- pom.xml — это сама программа? Нет. Это имя и список библиотек.