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
, andversion
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 insidetarget/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)