Учебники

Maven — построить жизненный цикл

Жизненный цикл сборки — это четко определенная последовательность фаз, которые определяют порядок, в котором должны выполняться цели. Здесь фаза представляет собой этап в жизненном цикле. Например, типичный жизненный цикл сборки Maven состоит из следующей последовательности этапов.

фаза рукоятки Описание
Prepare-ресурсы копирование ресурсов Копирование ресурсов может быть настроено на этом этапе.
утверждать Проверка информации Проверяет правильность проекта и наличие всей необходимой информации.
компилировать сборник Компиляция исходного кода выполняется на этом этапе.
Тестовое задание тестирование Тестирует скомпилированный исходный код, подходящий для тестирования фреймворка.
пакет упаковка На этом этапе создается пакет JAR / WAR, как указано в пакете в POM.xml.
устанавливать монтаж На этом этапе пакет устанавливается в локальный / удаленный репозиторий maven.
развертывание Развертывание Копирует окончательный пакет в удаленный репозиторий.

Для регистрации целей всегда есть этапы до и после , которые должны выполняться до или после определенного этапа.

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

Maven имеет следующие три стандартных жизненных цикла —

  • чистый
  • по умолчанию (или сборка)
  • сайт

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

Порядок выполнения зависит от порядка, в котором вызываются цели и этапы сборки. Например, рассмотрим команду ниже. Аргументы clean и package являются фазами сборки, в то время как зависимость: копия-зависимость является целью.

mvn clean dependency:copy-dependencies package

Здесь сначала выполняется чистая фаза, за которой следует цель зависимости: копия-зависимости , и, наконец , фаза пакета .

Чистый жизненный цикл

Когда мы выполняем команду mvn post-clean , Maven запускает чистый жизненный цикл, состоящий из следующих этапов.

  • Предварительная очистка
  • чистый
  • после чистой

Цель Maven clean (clean: clean) связана с чистой фазой в чистом жизненном цикле. Его чисто: cleangoal удаляет выходные данные сборки, удаляя каталог сборки. Таким образом, при выполнении команды mvn clean Maven удаляет каталог сборки.

Мы можем настроить это поведение, указав цели на любом из вышеуказанных этапов чистого жизненного цикла.

В следующем примере мы прикрепим maven-antrun-plugin: run target к этапам предварительной, чистой и последующей очистки. Это позволит нам отображать текстовые сообщения, отображающие фазы чистого жизненного цикла.

Мы создали файл pom.xml в папке C: \ MVN \ project.

<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>com.companyname.projectgroup</groupId>
   <artifactId>project</artifactId>
   <version>1.0</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>

Теперь откройте командную консоль, перейдите в папку, содержащую pom.xml, и выполните следующую команду mvn .

C:\MVN\project>mvn post-clean

Maven начнет обработку и отображение всех фаз чистого жизненного цикла.

[INFO] Scanning for projects...
[INFO] -----------------------------------------------------------------
-
[INFO] Building Unnamed - com.companyname.projectgroup:project:jar:1.0
[INFO] task-segment: [post-clean]
[INFO] ------------------------------------------------------------------
[INFO] [antrun:run {execution: id.pre-clean}]
[INFO] Executing tasks
[echo] pre-clean phase
[INFO] Executed tasks
[INFO] [clean:clean {execution: default-clean}]
[INFO] [antrun:run {execution: id.clean}]
[INFO] Executing tasks
[echo] clean phase
[INFO] Executed tasks
[INFO] [antrun:run {execution: id.post-clean}]
[INFO] Executing tasks
[echo] post-clean phase
[INFO] Executed tasks
[INFO] ------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------
[INFO] Total time: > 1 second
[INFO] Finished at: Sat Jul 07 13:38:59 IST 2012
[INFO] Final Memory: 4M/44M
[INFO] ------------------------------------------------------------------

Вы можете попробовать настроить команду mvn clean , которая покажет предварительную очистку и очистку. Ничто не будет выполнено для фазы после очистки .

Жизненный цикл по умолчанию (или сборка)

Это основной жизненный цикл Maven, который используется для создания приложения. Он имеет следующие 21 фазы.

Sr.No. Фаза жизненного цикла и описание
1

утверждать

Проверяет правильность проекта и наличие всей необходимой информации для завершения процесса сборки.

2

инициализировать

Инициализирует состояние сборки, например, устанавливает свойства.

3

генерировать-источники

Создайте любой исходный код для включения в фазу компиляции.

4

Процесс-источники

Обработайте исходный код, например, отфильтруйте любое значение.

5

генерировать-ресурсы

Генерация ресурсов для включения в пакет.

6

Процесс-ресурсы

Скопируйте и обработайте ресурсы в каталог назначения, готовый к этапу упаковки.

7

компилировать

Скомпилируйте исходный код проекта.

8

Процесс-классы

Постобработка сгенерированных файлов из компиляции, например, для улучшения / оптимизации байт-кода в классах Java.

9

генерировать-тест-источников

Создайте любой тестовый исходный код для включения в фазу компиляции.

10

Процесс-тест-источники

Обработайте исходный код теста, например, отфильтруйте любые значения.

11

тест-компиляция

Скомпилируйте исходный код теста в каталог назначения теста.

12

Процесс-тест-классы

Обработать сгенерированные файлы из файла с тестовым кодом.

13

тестовое задание

Запустите тесты, используя подходящую среду модульного тестирования (Junit — один).

14

подготовить-пакет

Выполните все операции, необходимые для подготовки пакета до фактической упаковки.

15

пакет

Возьмите скомпилированный код и упакуйте его в распространяемый формат, такой как файл JAR, WAR или EAR.

16

Предварительная интеграция-тест

Выполните действия, необходимые перед выполнением интеграционных тестов. Например, настройка необходимой среды.

17

Интеграция испытаний

При необходимости обработайте и разверните пакет в среде, где можно запускать интеграционные тесты.

18

после интеграции тест

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

19

проверить

Выполните любые проверки, чтобы убедиться, что пакет действителен и соответствует критериям качества.

20

устанавливать

Установите пакет в локальный репозиторий, который можно использовать в качестве зависимости в других проектах локально.

21

развертывание

Копирует окончательный пакет в удаленный репозиторий для совместного использования с другими разработчиками и проектами.

утверждать

Проверяет правильность проекта и наличие всей необходимой информации для завершения процесса сборки.

инициализировать

Инициализирует состояние сборки, например, устанавливает свойства.

генерировать-источники

Создайте любой исходный код для включения в фазу компиляции.

Процесс-источники

Обработайте исходный код, например, отфильтруйте любое значение.

генерировать-ресурсы

Генерация ресурсов для включения в пакет.

Процесс-ресурсы

Скопируйте и обработайте ресурсы в каталог назначения, готовый к этапу упаковки.

компилировать

Скомпилируйте исходный код проекта.

Процесс-классы

Постобработка сгенерированных файлов из компиляции, например, для улучшения / оптимизации байт-кода в классах Java.

генерировать-тест-источников

Создайте любой тестовый исходный код для включения в фазу компиляции.

Процесс-тест-источники

Обработайте исходный код теста, например, отфильтруйте любые значения.

тест-компиляция

Скомпилируйте исходный код теста в каталог назначения теста.

Процесс-тест-классы

Обработать сгенерированные файлы из файла с тестовым кодом.

тестовое задание

Запустите тесты, используя подходящую среду модульного тестирования (Junit — один).

подготовить-пакет

Выполните все операции, необходимые для подготовки пакета до фактической упаковки.

пакет

Возьмите скомпилированный код и упакуйте его в распространяемый формат, такой как файл JAR, WAR или EAR.

Предварительная интеграция-тест

Выполните действия, необходимые перед выполнением интеграционных тестов. Например, настройка необходимой среды.

Интеграция испытаний

При необходимости обработайте и разверните пакет в среде, где можно запускать интеграционные тесты.

после интеграции тест

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

проверить

Выполните любые проверки, чтобы убедиться, что пакет действителен и соответствует критериям качества.

устанавливать

Установите пакет в локальный репозиторий, который можно использовать в качестве зависимости в других проектах локально.

развертывание

Копирует окончательный пакет в удаленный репозиторий для совместного использования с другими разработчиками и проектами.

Есть несколько важных концепций, связанных с жизненными циклами Maven, о которых стоит упомянуть —

  • Когда фаза вызывается с помощью команды Maven, например, mvn compile , будут выполняться только фазы до этой фазы включительно.

  • Различные цели maven будут привязаны к различным этапам жизненного цикла Maven в зависимости от типа упаковки (JAR / WAR / EAR).

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

Различные цели maven будут привязаны к различным этапам жизненного цикла Maven в зависимости от типа упаковки (JAR / WAR / EAR).

В следующем примере мы прикрепим maven-antrun-plugin: run target к нескольким этапам жизненного цикла сборки. Это позволит нам отображать текстовые сообщения, отображающие фазы жизненного цикла.

Мы обновили pom.xml в папке C: \ MVN \ project.

<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>com.companyname.projectgroup</groupId>
   <artifactId>project</artifactId>
   <version>1.0</version>
   <build>
      <plugins>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>1.1</version>
            <executions>
               <execution>
                  <id>id.validate</id>
                  <phase>validate</phase>
                  <goals>
                     <goal>run</goal>
                  </goals>
                  <configuration>
                     <tasks>
                        <echo>validate phase</echo>
                     </tasks>
                  </configuration>
               </execution>
            
               <execution>
                  <id>id.compile</id>
                  <phase>compile</phase>
                  <goals>
                     <goal>run</goal>
                  </goals>
                  <configuration>
                     <tasks>
                        <echo>compile phase</echo>
                     </tasks>
                  </configuration>
               </execution>
            
               <execution>
                  <id>id.test</id>
                  <phase>test</phase>
                  <goals>
                     <goal>run</goal>
                  </goals>
                  <configuration>
                     <tasks>
                        <echo>test phase</echo>
                     </tasks>
                  </configuration>
               </execution>
            
               <execution>
                  <id>id.package</id>
                  <phase>package</phase>
                  <goals>
                     <goal>run</goal>
                  </goals>
                  <configuration>
                     <tasks>
                        <echo>package phase</echo>
                     </tasks>
                  </configuration>
               </execution>
            
               <execution>
                  <id>id.deploy</id>
                  <phase>deploy</phase>
                  <goals>
                     <goal>run</goal>
                  </goals>
                  <configuration>
                     <tasks>
                        <echo>deploy phase</echo>
                     </tasks>
                  </configuration>
               </execution>
            </executions>
         </plugin>
      </plugins>
   </build>
</project>

Теперь откройте командную консоль, перейдите в папку, содержащую pom.xml, и выполните следующую команду mvn .

C:\MVN\project>mvn compile

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

[INFO] Scanning for projects...
[INFO] -----------------------------------------------------------------
-
[INFO] Building Unnamed - com.companyname.projectgroup:project:jar:1.0
[INFO] task-segment: [compile]
[INFO] -----------------------------------------------------------------
-
[INFO] [antrun:run {execution: id.validate}]
[INFO] Executing tasks
[echo] validate phase
[INFO] Executed tasks
[INFO] [resources:resources {execution: default-resources}]
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered
resources,
i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory
C:\MVN\project\src\main\resources
[INFO] [compiler:compile {execution: default-compile}]
[INFO] Nothing to compile - all classes are up to date
[INFO] [antrun:run {execution: id.compile}]
[INFO] Executing tasks
[echo] compile phase
[INFO] Executed tasks
[INFO] -----------------------------------------------------------------
-
[INFO] BUILD SUCCESSFUL
[INFO] -----------------------------------------------------------------
-
[INFO] Total time: 2 seconds
[INFO] Finished at: Sat Jul 07 20:18:25 IST 2012
[INFO] Final Memory: 7M/64M
[INFO] -----------------------------------------------------------------
-

Жизненный цикл сайта

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

  • предварительно сайт
  • сайт
  • пост-сайт
  • Сайт-развернуть

В следующем примере мы прикрепим maven-antrun-plugin: run target ко всем этапам жизненного цикла сайта. Это позволит нам отображать текстовые сообщения, отображающие фазы жизненного цикла.

Мы обновили pom.xml в папке C: \ MVN \ project.

<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>com.companyname.projectgroup</groupId>
   <artifactId>project</artifactId>
   <version>1.0</version>
   <build>
      <plugins>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>1.1</version>
            <executions>
               <execution>
                  <id>id.pre-site</id>
                  <phase>pre-site</phase>
                  <goals>
                     <goal>run</goal>
                  </goals>
                  <configuration>
                     <tasks>
                        <echo>pre-site phase</echo>
                     </tasks>
                  </configuration>
               </execution>
               
               <execution>
                  <id>id.site</id>
                  <phase>site</phase>
                  <goals>
                     <goal>run</goal>
                  </goals>
                  <configuration>
                     <tasks>
                        <echo>site phase</echo>
                     </tasks>
                  </configuration>
               </execution>
               
               <execution>
                  <id>id.post-site</id>
                  <phase>post-site</phase>
                  <goals>
                     <goal>run</goal>
                  </goals>
                  <configuration>
                     <tasks>
                        <echo>post-site phase</echo>
                     </tasks>
                  </configuration>
               </execution>
               
               <execution>
                  <id>id.site-deploy</id>
                  <phase>site-deploy</phase>
                  <goals>
                     <goal>run</goal>
                  </goals>
                  <configuration>
                     <tasks>
                        <echo>site-deploy phase</echo>
                     </tasks>
                  </configuration>
               </execution>
               
            </executions>
         </plugin>
      </plugins>
   </build>
</project>

Теперь откройте командную консоль, перейдите в папку, содержащую pom.xml, и выполните следующую команду mvn .

C:\MVN\project>mvn site

Maven начнет обработку и отображение фаз жизненного цикла сайта до фазы сайта.