- •Введение
- •История разработки
- •Терминология
- •Maven – основные понятия
- •Для чего Maven создан?
- •Соглашение по конфигурации
- •Файл pom
- •Супер pom
- •Жизненный цикл сборки проектов
- •Жизненный цикл Clean
- •Жизненный цикл Default (Build)
- •Жизненный цикл Site
- •Профили сборки
- •Типы профилей сборки
- •Активация профиля
- •Репозитории
- •Локальные репозитории
- •Центральный репозиторий
- •Удалённый репозиторий
- •Порядок поиска зависимостей Maven
- •Плагины
- •Типы плагинов
- •Создание проекта
- •Сборка и тестирование проекта
- •Внешние зависимости
- •Документирование проекта
- •Шаблоны проектов
- •Архитип
- •Создание приложения
- •Автоматизация развёртывания
Оглавление
История разработки 2
Терминология 3
Maven – основные понятия 3
Для чего Maven создан? 3
Соглашение по конфигурации 4
Супер POM 5
Жизненный цикл Clean 7
Жизненный цикл Default (Build) 10
Жизненный цикл Site 15
Типы профилей сборки 18
Активация профиля 18
Локальные репозитории 19
Центральный репозиторий 19
Удалённый репозиторий 20
Порядок поиска зависимостей Maven 20
Типы плагинов 21
Архитип 24
Создание приложения 24
Введение
Apache Maven — фреймворк для автоматизации сборки проектов на основе описания их структуры в файлах на языке POM (англ. Project Object Model), являющемся подмножеством XML. Проект Maven издаётся сообществом Apache Software Foundation, где формально является частью Jakarta Project.
Название программы, maven, — является словом из языка идиш, смысл которого можно примерно выразить как «собиратель знания».
Maven обеспечивает декларативную, а не императивную (в отличие от средства автоматизации сборки Apache Ant) сборку проекта. В файлах описания проекта содержится его спецификация, а не отдельные команды выполнения. Все задачи по обработке файлов, описанные в спецификации, Maven выполняет посредством их обработки последовательностью встроенных и внешних плагинов.
Maven используется для построения и управления проектами, написанными на Java, C#, Ruby, Scala, и других языках.
История разработки
Maven был создан канадцем Джейсоном ван Зилом (Jason van Zyl) и организованной им фирмой Sonatype. Он начался как подпроект Apache Turbine в 2002 г.. В 2003 году Maven был квалифицирован как Apache-проект верхнего уровня, тогда же появилась его первая версия — Maven 1.x. Она была опубликована 13-го июля 2004 как версия 1.0. Это происходило, однако, так быстро, что некоторые частности оказались непродуманными. Например, слишком много конфигурации, проблемы с производительностью.
Поэтому концепция была доработана и с 2005-го года началась параллельная разработка Maven 2.x, которая была сдана в версии 2.0 19-го октября 2005-го года.
Maven 1.x не разрабатывается дальше и ограничивается поддержкой пользователей и устранением ошибок.
Разработка Maven 3.0 началась в 2008 г.. После восьми альфа-релизов, первая бета-версия Maven 3.0 была опубликована в октябре 2010 г. Особенное внимание было уделено её обратной совместимости с Maven 2. Для большинства проектов переход от версии Maven 2 к версии Maven 3 не требует никаких изменений.
Разработка Maven происходит в следующих подпроектах:
Maven 1.x и Maven 2.x — старые версии Maven-а.
Maven 3.x развивает текущую линию продуктов Maven[8].
Plugins разрабатывает большинство Maven-плагинов.
Shared Components изготовляет компоненты программного обеспечения, которые могут использоваться всеми другими подпроектами.
Ant Tasks позволяет использовать возможности Ant из Maven.
Doxia это фреймворк для генерации контента из форматов Almost Plain Text (APT), Confluence, DocBook, FML (FAQ Markup Language), LaTeX, Rich Text Format (RTF), TWiki, XDoc и XHTML.
SCM (Source Code Management) разрабатывает программное обеспечение для подключения Apache к различным системам версионирования как CVS или Subversion.
Surefire разрабатывает тест-фреймворк для Maven-а.
Wagon готовит абстракцию коммуникационных протоколов как «доступ к файлам», HTTP или FTP.
Терминология
Как в любой системе, в Maven, есть свой набор терминов и понятий.
Вся структура проекта описывается в файле pom.xml (POM – Project Object Model), который должен находиться в корневой папке проекта. Ключевым понятием Maven является артефакт — это, по сути, любая библиотека, хранящаяся в репозитории. Это может быть какая-то зависимость или плагин.
Зависимости — это те библиотеки, которые непосредственно используются в вашем проекте для компиляции кода или его тестирования.
Плагины же используются самим Maven'ом при сборке проекта или для каких-то других целей (деплоймент, создание файлов проекта для Eclipse и др.).
В самом начале работы с Maven, пользователь непременно столкнется с таким понятием как архетип.
Архетип — это некая стандартная компоновка файлов и каталогов в проектах различного рода (веб, swing-проекты и прочие). Другими словами, Maven знает, как обычно строятся проекты и в соответствии с архетипом создает структуру каталогов.
Как правило, название артефакта состоит из названия группы, собственного названия и версии. К примеру Spring будет иметь вот такое название в среде Maven: org.springframework.spring:2.5.5. Последний домен означает всегда artifactId, все, что перед ним – groupId – хорошо это запомните!
