Skip to main content

Command Palette

Search for a command to run...

Struggling with Maven? Here's a Simple Guide to Maven & Its Lifecycle

Updated
4 min read
Struggling with Maven? Here's a Simple Guide to Maven & Its Lifecycle
N
Java & Spring Boot learner | Writing beginner-friendly technical articles | Exploring backend development

While learning Spring Boot, I came across an essential tool mentioned everywhere - Maven.

Initially, it felt like just another configuration file (pom.xml). But as I explored more, I realized Maven is actually the backbone of modern Java project development.

This blog is based on my notes + learning (including my reference material), explained in a simple way.

What is Maven?

Maven is a build automation tool used primarily for Java projects. It helps in:

  • Project build

  • Dependency management

  • Project structure standardization

In simple words:

Maven reduces manual work by automating everything required to build a project.

Problem before Maven

Before Maven, developers had to:

  • Manually download .jar files

  • Add them to the project

  • Handle version conflicts

This made projects:

  • hard to manage

  • error - prone

  • time - consuming

How Maven Solves This

Maven introduced:

  • A centralized dependency system

  • A standard project structure

  • An automated build lifecycle

You just define things once -> Maven handles the rest.

Maven Project Structure

Maven follows a convention over configuration approach.

project/
|
| ---- src/
|       |----- main/
|       |       |--- java/
|       |       |--- resources/
|       |       
|       |----- test
|
|
|----- pom.xml

Why this matters:

  • Every Maven project looks similar

  • Easy for teams to collaborate

  • Tools can understand your project automatically

Understanding pom.xml

The pom.xml file is the heart of a Maven project.

POM = Project Object Model

It contains:

  • Project details

  • Dependencies

  • Build configuration

  • Plugins

Example:

<project>
   <modelVersion>4.0.0</modelVersion>

   <groupId>com.app</groupId>
   <artifactId>demo</artifactId>
   <Version>1.0</Version>

   <dependencies>
       <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-core</artifactId>
          <version>5.3.0</version>
       </dependency>
   </dependencies>

</project>

Explanation:

  • groupId -> Organization name

  • artifactId -> Project name

  • version -> Project version

Maven uses this file to download dependencies automatically.

Maven Lifecycle

It is a sequence of phases used to build and manage a project.

Think of it like:

Step-by-step pipeline from code -> final application

Three Maven Lifecycles

1. Clean Lifecycle

Used to remove old build files

  • mvn clean -> deletes target/ folder

Ensures a fresh build

2. Default (Build) Lifecycle

This is the most important lifecycle.

It includes these phases:

  • validate -> Checks project correctness

  • compile -> converts .java to .class

  • test -> Runs unit tests

  • package -> Creates .jar / .war

  • install -> Stores in local repository

  • deploy -> Uploads to remote repository

3. Site Lifecycle

Used to generate documentation

  • mvn site

How Maven Lifecycle Works

Maven follows sequential execution.

  • If you run: mvn install

  • It automatically runs: validate -> compile -> test -> package -> install

you don't need to run each phase manually.

Target Folder

After build, Maven creates:

target/

It contains:

  • Compiled files

  • Final .jar or .war

This is your output folder.

Dependencies in Maven

Dependencies are external libraries required by your project.

Example:

<dependency>
     <groupId>mysql</groupId>
     <artifactId>mysql-connector-java</artifactId>
     <version>8.0.33</version>
</dependency>

Maven downloads it automatically from repositories.

Maven Repositories

Maven uses repositories:

1. Local Repository

  • Stored in your system (.m2 folder)

2. Central Repository

  • Default online repository

3. Remote Repository

  • Company/private repository

Why Maven is Important for Spring Boot

Maven helps Spring Boot by:

  • Managing dependencies easily

  • Supporting auto-configuration

  • Simplifying project setup

That's why almost every Spring Boot project uses Maven.

Conclusion

Maven is more than just a build tool - it is a foundation for structured and scalable Java development. By introducing concepts like dependency management, standardized project structure, and lifecycle automation, Maven removes a lot of manual effort and brings consistency to projects.

Understanding Maven is not just about learning commands or configuring pom.xml, but about understanding how real - world Java applications are built and managed.

As I continue my journey into backend development with Spring Boot, learning Maven has given me clarity on how projects are organized behind the scenes - and why modern development relies so heavily on automation tools.