DEV Community

Hunor Vadasz-Perhat
Hunor Vadasz-Perhat

Posted on

spring-014: mvn spring-boot:run-lifecycle-phases

When you start your Spring Boot app using mvn spring-boot:run, Maven executes the necessary lifecycle phases in order. Here’s what happens at each phase:


1️⃣ validate Phase

πŸ”Ή What happens?

  • Maven checks the project structure and pom.xml configuration.
  • Ensures all required properties are defined.
  • Verifies that all dependencies are resolved (if any are missing, Maven will try to download them).

πŸ”Ή Key tasks:

  • Ensures all necessary files exist (e.g., src/main/java, pom.xml).
  • Validates if groupId, artifactId, and version are correctly defined.

πŸ“Œ If an issue is found (e.g., missing dependencies), Maven stops here with an error.


2️⃣ compile Phase

πŸ”Ή What happens?

  • Compiles Java source code (.java β†’ .class files).
  • Stores compiled .class files inside target/classes/.

πŸ”Ή Key tasks:

  • Uses the Maven Compiler Plugin to compile source files.
  • If annotation processing (e.g., Lombok) is enabled, it processes those annotations.

πŸ“Œ If compilation fails due to syntax errors, Maven stops here.


3️⃣ package Phase

πŸ”Ή What happens?

  • Creates a JAR/WAR file containing the compiled classes and resources.
  • Moves the packaged file to target/your-app.jar (for Spring Boot, a fat JAR is created).

πŸ”Ή Key tasks:

  • Runs spring-boot-maven-plugin (for Spring Boot apps) to package dependencies into the JAR.
  • Includes META-INF/MANIFEST.MF (defines the main class to run).
  • Copies src/main/resources/ files into the JAR.

πŸ“Œ If packaging fails (e.g., missing files), Maven stops here.


4️⃣ spring-boot:run (Runs the App)

  • JVM starts and loads Demo1Application.main().
  • Spring Boot initializes the app, loads dependencies, and starts an embedded web server (if applicable).
  • The app is now running and ready to serve requests.

πŸ”„ Summary of Lifecycle Execution Before spring-boot:run

Phase Action Taken
validate Checks project structure, dependencies, and configuration.
compile Compiles .java files into .class files inside target/classes/.
package Bundles everything into a .jar/.war file in target/.
spring-boot:run Runs the packaged app using an embedded JVM.

πŸ“Œ These phases ensure that when your app starts, everything is correctly compiled and packaged, preventing runtime errors. πŸš€

Top comments (0)