DEV Community

DevCorner2
DevCorner2

Posted on

Understanding Maven Lifecycle Through Commands You Actually Run

When working with Maven, the lifecycle can feel abstract — "phases," "goals," "plugins" — it’s easy to get lost.
But here’s the reality: you don’t run lifecycle phases directly in day-to-day work.
Instead, you run commands like mvn package or mvn install, and Maven quietly executes an ordered sequence of phases behind the scenes.

This blog post will break it down, step by step, based on the actual commands you run.


🔹 The Big Idea

Maven has three lifecycles:

  • default – the main build (compiling, testing, packaging, deploying)
  • clean – handles cleanup (deletes target/)
  • site – generates project documentation

When you run a command like mvn package, Maven doesn’t just package — it runs all phases up to package in the correct order.


🔹 Commands and Their Lifecycle Phases

1. mvn validate

  • Runs only: validate
  • ✅ Ensures the project structure and pom.xml are valid.

2. mvn compile

  • Runs: validate → initialize → generate-sources → process-sources → generate-resources → process-resources → compile
  • ✅ Compiles main source code into target/classes.

3. mvn test-compile

  • Runs everything up to compile + test-related phases: process-classes → generate-test-sources → process-test-sources → generate-test-resources → process-test-resources → test-compile
  • ✅ Compiles test sources into target/test-classes.

4. mvn test

  • Runs everything up to test-compile +: process-test-classes → test
  • ✅ Executes unit tests (JUnit, TestNG).

5. mvn package

  • Runs everything up to test +: prepare-package → package
  • ✅ Packages the compiled code into a distributable format (JAR/WAR/EAR).

6. mvn verify

  • Runs everything up to package +: pre-integration-test → integration-test → post-integration-test → verify
  • ✅ Runs integration tests and checks.

7. mvn install

  • Runs everything up to verify +: install
  • ✅ Installs the artifact into your local Maven repository (~/.m2/repository).

8. mvn deploy

  • Runs everything up to install +: deploy
  • ✅ Pushes the final artifact to a remote repository (e.g., Nexus, Artifactory).

🔹 Clean Lifecycle Commands

mvn clean

  • Runs: pre-clean → clean → post-clean
  • ✅ Deletes the target/ directory to ensure a fresh build.

🔹 Site Lifecycle Commands

mvn site

  • Runs: pre-site → site → post-site → site-deploy
  • ✅ Generates a project documentation site.

🔹 Quick Reference Table

Command Lifecycle Phases Executed Output
mvn validate validate Validates project + POM
mvn compile up to compile Compiled classes in target/classes
mvn test-compile up to test-compile Compiled test classes
mvn test up to test Runs unit tests
mvn package up to package JAR/WAR/EAR package
mvn verify up to verify Runs integration tests, verification
mvn install up to install Artifact in local repo
mvn deploy up to deploy Artifact in remote repo
mvn clean clean lifecycle Deletes target/
mvn site site lifecycle Generates documentation site

🔹 Closing Thoughts

The key takeaway:
👉 When you run mvn <phase>, you’re not just running that phase. Maven executes all earlier phases in the lifecycle.

That’s why mvn package also compiles and tests, and why mvn install implicitly does everything from validation through testing before dropping the artifact into your local repo.

Understanding this flow helps you avoid confusion, optimize builds, and know exactly what Maven is doing under the hood.


Top comments (0)