Maven - Обзор

Что такое Maven?

Maven - это инструмент управления проектами и понимания, который предоставляет разработчикам полную структуру жизненного цикла сборки. Команда разработчиков может автоматизировать инфраструктуру сборки проекта практически в кратчайшие сроки, поскольку Maven использует стандартный макет каталогов и жизненный цикл сборки по умолчанию.

В случае среды с несколькими группами разработчиков Maven может настроить способ работы в соответствии со стандартами за очень короткое время. Поскольку большинство настроек проекта просты и допускают повторное использование, Maven упрощает жизнь разработчикам, создавая отчеты, проверяя, создавая и тестируя настройки автоматизации.

Maven предоставляет разработчикам способы управлять следующим:

  • Builds
  • Documentation
  • Reporting
  • Dependencies
  • SCMs
  • Releases
  • Distribution
  • Список рассылки

Подводя итог, Maven упрощает и стандартизирует процесс сборки проекта. Он легко справляется с компиляцией, распространением, документацией, совместной работой в команде и другими задачами. Maven увеличивает возможность повторного использования и берет на себя большинство задач, связанных со сборкой.

Maven Evolution

Первоначально Maven был разработан для упрощения процессов сборки в проекте Jakarta Turbine. Было несколько проектов, и каждый проект содержал немного разные файлы сборки ANT. JAR были зарегистрированы в CVS.

Затем группа Apache разработала Maven который может создавать несколько проектов вместе, публиковать информацию о проектах, развертывать проекты, совместно использовать JAR-файлы в нескольких проектах и ​​помогать в совместной работе команд.

Задача

Основная цель Maven - предоставить разработчику следующее:

  • Комплексная модель для проектов, которую можно использовать повторно, поддерживать и легче понимать.

  • Плагины или инструменты, которые взаимодействуют с этой декларативной моделью.

Структура и содержимое проекта Maven объявлены в XML-файле pom.xml, называемом объектной моделью проекта (POM), который является фундаментальной единицей всей системы Maven. В следующих главах мы подробно объясним POM.

Соглашение важнее конфигурации

Maven использует Convention над Configuration, что означает, что разработчикам не нужно создавать процесс сборки самостоятельно.

Разработчикам не нужно упоминать каждую деталь конфигурации. Maven обеспечивает разумное поведение по умолчанию для проектов. При создании проекта Maven Maven создает структуру проекта по умолчанию. От разработчика требуется только разместить файлы соответствующим образом, и ему / ей не нужно определять какую-либо конфигурацию в pom.xml.

В качестве примера в следующей таблице показаны значения по умолчанию для файлов исходного кода проекта, файлов ресурсов и других конфигураций. Предполагая,${basedir} обозначает местоположение проекта -

Вещь По умолчанию
исходный код $ {basedir} / src / main / java
Ресурсы $ {basedir} / src / main / resources
Тесты $ {basedir} / src / test
Соответствующий байт-код $ {basedir} / цель
распространяемый JAR $ {basedir} / target / classes

Для создания проекта Maven предоставляет разработчикам возможность указать цели жизненного цикла и зависимости проекта (которые зависят от возможностей плагина Maven и его соглашений по умолчанию). Большая часть задач, связанных с управлением проектами и сборкой, выполняется плагинами Maven.

Разработчики могут создавать любой проект Maven без необходимости понимать, как работают отдельные плагины. Мы подробно обсудим плагины Maven в следующих главах.

Особенности Maven

  • Простая настройка проекта в соответствии с лучшими практиками.

  • Последовательное использование во всех проектах.

  • Управление зависимостями, включая автоматическое обновление.

  • Большое и постоянно растущее хранилище библиотек.

  • Расширяемый, с возможностью легко писать плагины на Java или языках сценариев.

  • Мгновенный доступ к новым функциям с небольшой дополнительной настройкой или без нее.

  • Model-based builds - Maven может встраивать любое количество проектов в предопределенные типы вывода, такие как jar, war, metadata.

  • Coherent site of project information - Используя те же метаданные, что и в процессе сборки, maven может создавать веб-сайт и PDF-файл, включая полную документацию.

  • Release management and distribution publication - Без дополнительной настройки maven интегрируется с вашей системой управления версиями, такой как CVS, и управляет выпуском проекта.

  • Backward Compatibility- Вы можете легко перенести несколько модулей проекта в Maven 3 из более старых версий Maven. Он также может поддерживать более старые версии.

  • Automatic parent versioning - Нет необходимости указывать родителя в подмодуле для обслуживания.

  • Parallel builds- Он анализирует график зависимостей проекта и позволяет создавать модули расписания параллельно. Используя это, вы можете добиться повышения производительности на 20-50%.

  • Better Error and Integrity Reporting - В Maven улучшен отчет об ошибках, и он предоставляет вам ссылку на вики-страницу Maven, где вы получите полное описание ошибки.