-
Notifications
You must be signed in to change notification settings - Fork 5
MAVEN: introduction
(эта страница в разработке, каждый может внести свою лепту в ее содержимое)
Вкратце, maven — это система управления проектом.
Выросла она как сильно улучшенная альтернатива Ant (система сборки проектов), а не расширение ублажение лени программистов.
Есть и другие штуки, на подобии Maven: Gradle, SBT.
Простой ответ: чтобы меньше писать консольных команд для компиляции, упаковки и запуска java-проекта.
Там есть еще куча опций пользы Maven, но вам пока хватит и этого.
Например, для компиляции ветвистого проекта обычно нужно ввести: javac -cp out:src/* -d out
И это еще сокращенная версия. С применением Maven это же можно сделать проще: mvn compile
Ой, а кто-нибудь пробовал собрать jar вручную? В Maven это просто: mvn package
, я пока умолчу о настройке соответствующего плагина в Maven.
Ну ладно эти консольные команды, когда есть IDEA — нам не нужно париться!
Так зачем же нам Maven? Все просто: Maven позволяет собирать проект идемпотентно на любой системе и в любой среде разработки одинаково.
Никакие слоупоки не упустят какой-то этап сборки проекта... И тут можно было бы вспомнить про make
, но сразу скажу, что make
императивен и слишком системно зависим, а Maven имеет императивный подход.
Ой, а если нужны дополнительные библиотеки в проекте, как их автоматически подключать и, что самое интересное, постоянно обновлять? А когда их сотни?
В общем Maven это такой мультитул, который заменяет нам сразу сантехника, куховарку, токаря и любовника(цу) много инструментов.
- Это документация. Вот тут стоит ознакомиться с описанием Мавена.
- Потом стоит его установить на свой компьютер (для JCB не надо). Я это делаю с помощью
SDKMAN!
, но в документации описаны различные способы. :) - Любой Maven-проект начинается с файла
pom.xml
. Maven выполняет все, что задекларированно в этом файле. Детальнее про это смотрите в "MAVEN: what is pom.xml" - Стоит изучить жизненный цикл Maven.
- Типичная структура Maven-проекта выглядит так:
- Maven позволяет подключать тысячи библиотек по необходимости. В терминах Мавена они называются зависимостями.
- Каждый конечный
pom.xml
описывает один проект или модуль, в терминах Maven это называется артефактом.