- •Введение
- •История разработки
- •Терминология
- •Maven – основные понятия
- •Для чего Maven создан?
- •Соглашение по конфигурации
- •Файл pom
- •Супер pom
- •Жизненный цикл сборки проектов
- •Жизненный цикл Clean
- •Жизненный цикл Default (Build)
- •Жизненный цикл Site
- •Профили сборки
- •Типы профилей сборки
- •Активация профиля
- •Репозитории
- •Локальные репозитории
- •Центральный репозиторий
- •Удалённый репозиторий
- •Порядок поиска зависимостей Maven
- •Плагины
- •Типы плагинов
- •Создание проекта
- •Сборка и тестирование проекта
- •Внешние зависимости
- •Документирование проекта
- •Шаблоны проектов
- •Архитип
- •Создание приложения
- •Автоматизация развёртывания
Супер pom
Все POM-файлы являются наследниками родительского POM. Этот POM-файл называется Super POM и содержит значения, унаследованные по умолчанию.
Простой способ просмотреть настройки по умолчанию Super POM файла – это использование команды: mvn help:effective-pom.
Для понимания того, как это работает на практике, рассмотрим простой пример.
Открываем консоль и пишем следующее:
mvn help:effective-pom
В
полученном файле мы можем видеть
изначальную структуру проекта, директорию
вывода, необходимые плагины, репозитории
которые Maven будет использовать во время
выполнения необходимых задач.
Maven также обеспечивает множество архитипов для создания проектов для создания определённой структуры и файла pom.xml.
Жизненный цикл сборки проектов
Жизненный цикл сборки в Maven – это чётко определённая последовательность фаз во время выполнения которых должны быть достигнуты определённые цели.
Типичный жизненный цикл сборки Maven выглядит следующим образом:
Фаза |
Действия |
Описание |
prepare-resources |
Копирование ресурсов |
В этой фазе происходит копирование ресурсов, которое, также, может быть настроено. |
compile |
Компиляция |
В этой фазе происходит компиляция исходного кода. |
package |
Создание пакета |
В этой фазе, в зависимости от настроек создаётся архив JAR/WAR. Тип архива указывается в pom.xml файле. |
install |
Установка |
В этой фазе происходит установка пакета в локальный/удалённый репозиторий maven. |
Каждая из этих фаз имеет фазы pre и post. Они могут быть использованы для регистрации задач, которые должны быть запущены перед и после указанной фазы.
Когда Maven начинает сборку проекта, он проходит через определённую последовательность фаз и выполняет определённые задачи, которые указаны в каждой из фаз. Maven имеет следующие 3 стандартных жизненных цикла:
clean
default
site
Задача (goal) – это специальная задача, которая относится к сборке проекта и его управлению. Она может привязываться как к нескольким фазам, так и ни к одной. Задача, которая не привязана ни к одной фазе, может быть запущена вне фаз сборки с помощью прямого вызова.
Порядок выполнения зависит от порядка вызова целей и фаз.
Например, рассмотрим команду ниже. Аргументы clean и package являются фазами сборки до тех пор, пока dependency: copy-dependencies является задачей.
mvn clean dependency:copy-dependencies package
В этом случае, сначала будет выполнена фаза clean, после этого будет выполнена задача dependency: copy-dependencies. После чего будет выполнена фаза package.
Жизненный цикл Clean
Когда мы выполняем команду
mvn post-clean
Задача clean Maven (clean:clean) привязывается к фазе clean в жизненном цикле сборки. Эта задача удаляет ввод сборки путём удаления директории сборки. Таким образом, когда выполняется команда mvn clean, Maven удаляет директорию сборки.
Мы можем настроить это поведение указав эти задачи в любой из фаз сборки.
Рассмотрим пример, в котором мы привяжем задачу maven-antrun-plugin:run к фазам pre-clean, clean и post-clean.
Пример:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion>
<groupId>ProselyteTutorials</groupId> <artifactId>MavenTutorial</artifactId> <version>1.0-SNAPSHOT</version>
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <version>1.1</version> <executions> <execution> <id>id.pre-clean</id> <phase>pre-clean</phase> <goals> <goal>run</goal> </goals> <configuration> <tasks> <echo>pre-clean phase</echo> </tasks> </configuration> </execution> <execution> <id>id.clean</id> <phase>clean</phase> <goals> <goal>run</goal> </goals> <configuration> <tasks> <echo>clean phase</echo> </tasks> </configuration> </execution> <execution> <id>id.post-clean</id> <phase>post-clean</phase> <goals> <goal>run</goal> </goals> <configuration> <tasks> <echo>post-clean phase</echo> </tasks> </configuration> </execution> </executions> </plugin> </plugins> </build> </project>
|
После этого выполним в терминале следующую команду:
mvn post-clean
В результате мы получим следующий результат:
[INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building MavenTutorial 1.0-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- maven-antrun-plugin:1.1:run (id.pre-clean) @ MavenTutorial --- [INFO] Executing tasks [echo] pre-clean phase [INFO] Executed tasks [INFO] [INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ MavenTutorial --- [INFO] [INFO] --- maven-antrun-plugin:1.1:run (id.clean) @ MavenTutorial --- [INFO] Executing tasks [echo] clean phase [INFO] Executed tasks [INFO] [INFO] --- maven-antrun-plugin:1.1:run (id.post-clean) @ MavenTutorial --- [INFO] Executing tasks [echo] post-clean phase [INFO] Executed tasks [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 0.417s [INFO] Finished at: Sun Mar 27 21:38:15 EEST 2016 [INFO] Final Memory: 7M/150M [INFO] ------------------------------------------------------------------------ |
Мы также можем выполнить такие же действия для фаз pre-clean и clean.
