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. ๐Ÿš€

AWS Security LIVE!

Join us for AWS Security LIVE!

Discover the future of cloud security. Tune in live for trends, tips, and solutions from AWS and AWS Partners.

Learn More

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

๐Ÿ‘‹ Kindness is contagious

Please leave a โค๏ธ or a friendly comment on this post if you found it helpful!

Okay