← Назад к вопросам

Какие жизненные стадии проекта пройдут до запуска package при выполнении команды mvn package

2.0 Middle🔥 131 комментариев
#Другое

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Жизненные стадии Maven до запуска package

При выполнении команды mvn package Maven проходит через несколько определённых фаз жизненного цикла (lifecycle phases) проекта. Это стандартизированный процесс, который был разработан для обеспечения консистентности в управлении проектами.

Полный жизненный цикл Maven

Maven имеет три встроенных жизненных цикла:

  1. clean — очистка артефактов
  2. default — компиляция и развёртывание (основной цикл)
  3. site — создание документации сайта

Фазы до package в жизненном цикле default

Когда вы выполняете mvn package, выполняются все фазы ДО phase package включительно:

  1. validate — проверка корректности структуры проекта
  2. initialize — инициализация, установка свойств
  3. generate-sources — генерация исходного кода
  4. process-sources — обработка исходного кода
  5. generate-resources — генерация ресурсов
  6. process-resources — копирование ресурсов в target/classes
  7. compile — компиляция исходного кода проекта
  8. process-classes — обработка скомпилированных файлов
  9. generate-test-sources — генерация исходного кода тестов
  10. process-test-sources — обработка исходного кода тестов
  11. generate-test-resources — генерация ресурсов для тестов
  12. process-test-resources — копирование ресурсов в директорию тестов
  13. test-compile — компиляция исходного кода тестов
  14. process-test-classes — обработка скомпилированных файлов тестов
  15. test — запуск unit-тестов с помощью фреймворка (JUnit, TestNG)
  16. 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 для полной пересборки
Какие жизненные стадии проекта пройдут до запуска package при выполнении команды mvn package | PrepBro