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)