Maven — это инструмент для автоматической сборки проектов на основе описания их структуры в специальных файлах на языке POM (Project Object Model) — подмножестве XML.
Чаще всего Maven используют Java-разработчики, однако после установки дополнительных плагинов его также можно применять для работы на PHP, Ruby, Scala, C/C++ и Groovy.

Зачем разработчики используют Maven
Функциональность системы сборки Maven шире, чем компилятора исходного кода. В процессе работы приложения Apache Maven вызывает компилятор и при этом автоматически управляет зависимостями и ресурсами, например:
- загружает подходящие версии пакетов;
- размещает изображения, аудио- и видеофайлы в нужных папках;
- подгружает сторонние библиотеки.
Автоматическая сборка приложения особенно важна на этапах разработки, отладки и тестирования — Maven помогает собрать код и ресурсы в исполняемое приложение без IDE (среды разработки). При этом система сборки отличается гибкостью:
- может использоваться в IDE — Eclipse, IntelliJ IDEA, NetBeans и других;
- не зависит от операционной системы;
- не требует установки — архив с программой можно распаковать в любой директории;
- все необходимые параметры имеют оптимальные настройки по умолчанию;
- упрощает организацию командной работы и документирование;
- запускает библиотеки для модульного тестирования;
- обеспечивает соблюдение стандартов;
- имеет огромное количество плагинов и расширений.
Также существуют две другие системы сборки Java-приложений — Ant и Gradle, однако Maven пользуется наибольшей популярностью и является стандартом индустрии.
Установка и настройка среды Maven
Установочный файл системы сборки Apache Maven можно скачать с официального сайта. Программа займет около 10 Мб дискового пространства, но для создания локального репозитория потребуется не менее 500 Мб.
Для запуска системы на компьютере пользователя должен быть установлен пакет JDK, а в переменной окружения PATH указан путь к maven/bin. Если архив с Maven распаковали, предположим, в директорию C:\Utils, то путь будет выглядеть так: C:\Utils\maven\bin.
Чтобы установить переменную в Windows 10, нужно перейти в Панель управления — Система — Дополнительные параметры системы. Затем нажать Переменные среды, найти PATH и выбрать Изменить, после чего добавить путь C:\Utils\maven\bin в конец строки.
Локальный репозиторий
Репозиторий — это место для хранения и обновления файлов проекта. Директория на компьютере разработчика, в которой Maven хранит все jar-файлы отдельного проекта, библиотеки и необходимые модули (зависимости), называется локальным репозиторием. По умолчанию он располагается в папке Libraries\Documents\.m2.
Центральный репозиторий
Это общее онлайн-хранилище, здесь находятся все библиотеки, плагины и модули, созданные разработчиками сообщества Maven. Если во время сборки проекта система не находит нужную библиотеку (зависимость) в локальном репозитории разработчика, она автоматически обращается в центральный репозиторий Maven.
Maven POM
В среде Maven «собранные» проекты называются артефактами, а не приложениями или программами. Термин выбран потому, что готовый проект не всегда является исполняемым приложением — он может быть модулем, плагином или библиотекой.
Для описания структуры проектов Apache Maven применяет разновидность языка XML под названием POM (сокращение от Project Object Model, «объектная модель проекта»). Основные теги POM:
- project — базовый тег, содержит всю информацию о приложении;
- modelVersion — генерируется автоматически, текущая версия — 4.0.0;
- groupId — пакет, к которому принадлежит приложение, с добавлением имени домена;
- artifactId — уникальный ID артефакта;
- version — создается и обновляется автоматически, во время разработки к номеру версии добавляется суффикс -SNAPSHOT.
Информация, заключенная в тегах, является минимально необходимым описанием проекта (minimal POM), представленным в файле pom.xml. Пример POM-файла выглядит так:<project> <modelversion>4.0.0</modelversion> <groupid>com.sample.app</groupid> <artifactid>new-app</artifactid> <version>1.0-SNAPSHOT</version> </project>
Зависимости (Dependency)
Зависимостями разработчики называют сторонние библиотеки и модули, которые влияют на работоспособность программы. Maven обеспечивает автоматическое управление зависимостью — загружает модули и генерирует их описание в объектной модели проекта. В системе POM используются два тега — dependencies и dependency. Пример описания выглядит так:<dependencies> <dependency> <groupid> com.ourcompany.app </groupid> <artifactid>our-first-app</artifactid> <version>2.0</version> <type>war</type> <scope>runtime</scope> </dependency> <dependency> <groupid> com.ourcompany.app </groupid> <artifactid>our-second-app</artifactid> <version>1.0</version> <type>bar</type> <scope>runtime</scope> </dependency> </dependencies>
В нем тег <scope>runtime</scope> указывает на то, что зависимость относится к запуску приложения и не требуется для компиляции. В случае использования зависимости для компиляции тег имел бы вид <scope>compile</scope>, а для тестирования приложения — <scope>test</scope>.
Плагин Surefire для тестирования в системе Maven
Для тестирования модулей программы система сборки использует плагин Surefire, который можно загрузить с официального сайта. Отчеты о проверке модулей плагин сохраняет в двух форматах:
- текст без форматирования .txt;
- файл .xml.
Если разработчику нужны отчеты в HTML-формате, можно установить дополнительное расширение для Surefire — Maven Surefire Report Plugin. По умолчанию отчеты во всех форматах сохраняются в папке /target/surefire-reports/. Плагин Surefire способен выполнять тестирование проекта как самостоятельно, так и в интеграции с другими популярными фреймворками для проведения тестов Java-приложений, например TestNG и Junit.

Архетипы и структура проектов
Архетипами в среде Maven называются шаблоны. Образцы шаблонов есть на официальном сайте проекта. С их помощью можно сгенерировать прототипы нескольких проектов — простого приложения, плагина, сайта. Список доступных архетипов получают, выполнив в консоли команду:
mvn archetype:generate
Один из стандартных шаблонов представляет собой традиционнуюпрограмму «Hello, world!». Чтобы скачать архетип в свой локальный репозиторий, нужно выполнить команду:
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false
Скачивание первого шаблона может занять продолжительное время — это происходит потому, что система сборки проверяет доступные обновления и плагины. По умолчанию приложение называется my-app. Перейти в его корневую директорию можно с помощью команды:
cd my-app
Архетипы позволяют начинающим разработчикам быстро познакомиться с необходимой структурой Java-проектов. В директории my-app находятся папки:
src/main/java — с исходным кодом проекта;
src/test/java — с тестовым кодом.
Для сборки проекта выполните команду:
mvn package
По ней Maven запускает компиляцию артефакта в jar-файл. Готовую программу запускают командой:
java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App
В результате на экране появится приветствие:
Hello, world!
Intellij IDEA позволяет создавать и запускать проекты без использования консоли. Узнать, как это сделать, можно из видео.https://www.youtube.com/embed/pt3uB0sd5kY
Title Работа с Intellij IDEA. Источник
Maven многократно упрощает процесс разработки и сборки на всех этапах — от структурирования проекта и тестирования кода до «упаковки» готового артефакта. Умение работать с системой сборки необходимо любому Java-разработчику.
0 комментариев