Common Maven Commands
Apache Maven is one of the most popular build automation and dependency management tools in the Java ecosystem.
While Maven offers a wide range of commands, a handful of them are used daily by Java developers when building, testing, and managing projects.
In this lesson, we’ll cover the most common Maven commands:
mvn clean installmvn packagemvn testmvn dependency:tree
1. mvn clean install
This is probably the most widely used Maven command. It performs two significant steps:
clean→ Deletes thetarget/directory from previous builds (removes compiled classes, JARs, reports, etc.).install→ Compiles, tests, packages the project, and then installs the final artifact (JAR/WAR) into the local Maven repository (~/.m2/repository).
This makes the artifact available for reuse by other local Maven projects.
Example:
mvn clean installWhen to Use It?
- Before deploying a project locally for use in other projects
- In CI/CD pipelines, to ensure fresh builds without leftover files
- When you want to test the full lifecycle: clean → compile → test → package → install
2. mvn package
The package command compiles source code, runs unit tests, and then packages the compiled code into a distributable format like:
.jar(Java Archive).war(Web Application Archive).ear(Enterprise Archive)
The packaged file will be placed inside the target/ folder.
Example
mvn packageWhen to use it?
- When you only need to generate the final artifact (JAR/WAR) but don’t need to install it to the local repo
- Helpful in creating build artifacts during development
3. mvn test
The test command runs all unit tests in the project using the Surefire Plugin by default.
- Test classes are located in
src/test/java - Test resources are in
src/test/resources
Example
mvn testWhen to Use It?
- To verify your code changes are working before packaging or installing
- As part of a CI pipeline for continuous testing
- To ensure new features or bug fixes don’t break existing code
Tip: To skip tests, run: mvn install -DskipTests4. mvn dependency:tree
This command shows a hierarchical view of dependencies in your project.
It helps developers:
- See which libraries are included (direct and transitive dependencies)
- Identify version conflicts
- Debug dependency-related issues
Example:
mvn dependency:treeSample Output:
[INFO] com.example:my-app:jar:1.0-SNAPSHOT
[INFO] └─ org.springframework.boot:spring-boot-starter-web:jar:3.1.0:compile
[INFO] ├─ org.springframework.boot:spring-boot-starter:jar:3.1.0:compile
[INFO] ├─ org.springframework.boot:spring-boot:jar:3.1.0:compile
[INFO] └─ com.fasterxml.jackson.core:jackson-databind:jar:2.15.2:compile
When to use it?
- To debug dependency conflicts (multiple versions of the same library)
- To optimize and remove unused dependencies
- To understand transitive dependencies automatically added by Maven
Key Takeaways
mvn clean install→ Cleans old builds and installs artifacts into the local repositorymvn package→ Compiles and packages your project into JAR/WARmvn test→ Runs unit tests with Surefire pluginmvn dependency:tree→ Shows dependencies and resolves conflicts
Mastering these commands will make you more efficient and help you build reliable Java applications with Maven.