Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Руководство по MAVEN.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
117.4 Кб
Скачать

Супер 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.