← Назад к вопросам
Какие жизненные стадии проекта пройдут до запуска package при выполнении команды mvn package
2.0 Middle🔥 131 комментариев
#Другое
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Жизненные стадии Maven до запуска package
При выполнении команды mvn package Maven проходит через несколько определённых фаз жизненного цикла (lifecycle phases) проекта. Это стандартизированный процесс, который был разработан для обеспечения консистентности в управлении проектами.
Полный жизненный цикл Maven
Maven имеет три встроенных жизненных цикла:
- clean — очистка артефактов
- default — компиляция и развёртывание (основной цикл)
- site — создание документации сайта
Фазы до package в жизненном цикле default
Когда вы выполняете mvn package, выполняются все фазы ДО phase package включительно:
- validate — проверка корректности структуры проекта
- initialize — инициализация, установка свойств
- generate-sources — генерация исходного кода
- process-sources — обработка исходного кода
- generate-resources — генерация ресурсов
- process-resources — копирование ресурсов в target/classes
- compile — компиляция исходного кода проекта
- process-classes — обработка скомпилированных файлов
- generate-test-sources — генерация исходного кода тестов
- process-test-sources — обработка исходного кода тестов
- generate-test-resources — генерация ресурсов для тестов
- process-test-resources — копирование ресурсов в директорию тестов
- test-compile — компиляция исходного кода тестов
- process-test-classes — обработка скомпилированных файлов тестов
- test — запуск unit-тестов с помощью фреймворка (JUnit, TestNG)
- package — упаковка скомпилированного кода в JAR/WAR файл
Практический пример структуры
// src/main/java/com/example/App.java
public class App {
public static void main(String[] args) {
System.out.println("Hello Maven!");
}
}
// src/test/java/com/example/AppTest.java
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
public class AppTest {
@Test
public void testApp() {
assertTrue(true);
}
}
Конфигурация pom.xml
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>my-app</artifactId>
<version>1.0.0</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>11</source>
<target>11</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
Ключевые моменты
- Плагины привязаны к фазам — каждый плагин выполняется в определённой фазе
- Порядок гарантирован — фазы выполняются в строгом порядке
- Зависимые фазы — если одна фаза падает, последующие не выполняются
- Пропуск тестов —
mvn package -DskipTestsпропустит фазу test - Clean перед build — часто используется
mvn clean packageдля полной пересборки