Maven - Commands

Cheatsheet Maven

Essential Maven commands for building, testing, and managing Java projects

What is this? Official Docs

Build automation and dependency management tool for Java projects with powerful lifecycle management.

What is Maven?

Maven is a powerful build automation and project management tool primarily used for Java projects. It manages dependencies, builds projects, and follows a standard directory structure with convention over configuration.

⚑ Key Features

  • Dependency management
  • Standard project structure
  • Build lifecycle phases
  • Plugin-based architecture
  • Central repository (Maven Central)

🎯 Use Cases

  • Java project builds
  • Dependency resolution
  • Multi-module projects
  • Automated testing
  • Artifact deployment

πŸ—οΈ Build - Clean Install

Clean and build project with dependencies installed to local repository.

mvn clean install

Most commonly used Maven command. Removes target directory, compiles, tests, and installs to ~/.m2/repository.

πŸ“¦ Build - Clean Package

Clean and package project without installing to local repository.

mvn clean package

Faster than install when you don’t need artifacts in local repo. Creates JAR/WAR in target/.

βš™οΈ Build - Compile Only

Compile source code without running tests.

mvn compile

Compiles src/main/java to target/classes. Useful for quick syntax checks.

⏭️ Build - Skip Tests

Build project while skipping test execution.

mvn clean install -DskipTests

Compiles tests but doesn’t run them. Faster builds when tests are not needed.

Skip test compilation entirely:

mvn clean install -Dmaven.test.skip=true

πŸ§ͺ Test - Run All Tests

Execute all unit tests in the project.

mvn test

Runs tests in src/test/java. Generates reports in target/surefire-reports/.

🎯 Test - Run Specific Test

Run a single test class.

mvn test -Dtest=UserServiceTest

Run specific test method:

mvn test -Dtest=UserServiceTest#testLogin

πŸ” Test - Run Pattern

Run tests matching a pattern.

mvn test -Dtest=*ServiceTest

Matches all test classes ending with ServiceTest.

🌳 Dependency - Show Tree

Display project dependency tree.

mvn dependency:tree

Shows all direct and transitive dependencies in tree format.

Filter by groupId:

mvn dependency:tree -Dincludes=org.springframework

πŸ”¬ Dependency - Analyze

Find unused and undeclared dependencies.

mvn dependency:analyze

Helps identify:

  • Unused declared dependencies
  • Used undeclared dependencies (should be in POM)

πŸ“‹ Dependency - Copy Dependencies

Copy all dependencies to target directory.

mvn dependency:copy-dependencies

Copies JARs to target/dependency/. Useful for creating lib folders.

Specify output directory:

mvn dependency:copy-dependencies -DoutputDirectory=lib

πŸ”— Dependency - Resolve

Download all dependencies to local repository.

mvn dependency:resolve

Ensures all dependencies are in ~/.m2/repository without building.

🧹 Clean - Remove Target

Delete the target directory.

mvn clean

Removes all compiled classes, JARs, and build artifacts from target/.

πŸ“¦ Package - Create JAR

Package compiled code into JAR file.

mvn package

Creates JAR in target/<artifactId>-<version>.jar.

πŸš€ Package - Create Executable JAR

Build JAR with dependencies included (fat JAR).

mvn clean package assembly:single

Requires maven-assembly-plugin. Creates executable JAR with all dependencies.

πŸ’Ύ Install - Local Repository

Install artifact to local Maven repository.

mvn install

Installs to ~/.m2/repository for use by other local projects.

πŸ“₯ Install - Custom JAR

Install external JAR to local repository.

mvn install:install-file \
  -Dfile=mylib.jar \
  -DgroupId=com.example \
  -DartifactId=mylib \
  -Dversion=1.0 \
  -Dpackaging=jar

🚒 Deploy - Remote Repository

Deploy artifact to remote repository.

mvn deploy

Uploads to repository configured in <distributionManagement>. Requires credentials in settings.xml.

ℹ️ Version - Display Version

Show Maven version and Java version.

mvn -version

Displays Maven version, Java version, and OS information.

⬆️ Version - Update Parent

Update parent POM version.

mvn versions:update-parent

Updates <parent> version to latest release.

πŸ”’ Version - Set Version

Set new project version.

mvn versions:set -DnewVersion=2.0.0

Updates version in POM and all modules.

Commit the change:

mvn versions:commit

Revert the change:

mvn versions:revert

πŸ”Œ Plugin - Execute Goal

Run specific plugin goal.

mvn groupId:artifactId:version:goal

Example - Spring Boot run:

mvn spring-boot:run

πŸ“œ Plugin - List Plugins

Display all plugins in the project.

mvn help:effective-pom | grep plugin

βœ… Lifecycle - Validate

Validate project structure and POM.

mvn validate

Checks if project is correct and all necessary information is available.

βœ”οΈ Lifecycle - Verify

Run integration tests.

mvn verify

Runs unit tests and integration tests. Higher lifecycle phase than test.

πŸ“„ POM - Effective POM

Display effective POM with all inherited settings.

mvn help:effective-pom

Shows final POM after inheritance and interpolation.

Save to file:

mvn help:effective-pom > effective-pom.xml

βš™οΈ POM - Effective Settings

Display effective Maven settings.

mvn help:effective-settings

Shows merged settings from global and user settings.xml.

πŸ—‘οΈ Repository - Purge Local

Remove artifacts from local repository.

mvn dependency:purge-local-repository

Deletes project dependencies from ~/.m2/repository and re-downloads them.

πŸ”„ Repository - Update Snapshots

Force update of snapshot dependencies.

mvn clean install -U

The -U flag forces update of snapshots and releases.

πŸ› Debug - Verbose Output

Run Maven with debug information.

mvn clean install -X

Shows detailed debug logs. Useful for troubleshooting build issues.

❌ Debug - Show Errors

Display full error stack traces.

mvn clean install -e

Shows exception stack traces when build fails.

πŸ“‘ Offline - Build Without Network

Build project in offline mode.

mvn clean install -o

Uses only local repository. Fails if dependencies are missing.

🎭 Profile - Activate Profile

Build with specific Maven profile.

mvn clean install -P production

Multiple profiles:

mvn clean install -P profile1,profile2

🧱 Multi-Module - Build Single Module

Build specific module in multi-module project.

mvn clean install -pl module-name

Build module with dependencies:

mvn clean install -pl module-name -am

Build from specific module:

mvn clean install -rf :module-name

⚑ Performance - Parallel Build

Build project using multiple threads.

mvn clean install -T 4

Uses 4 threads. Faster for multi-module projects.

Use cores:

mvn clean install -T 1C

Uses 1 thread per CPU core.

πŸ“š Site - Generate Documentation

Generate project documentation site.

mvn site

Creates HTML documentation in target/site/.

πŸ›οΈ Archetype - Create Project

Create new Maven project from archetype.

mvn archetype:generate \
  -DgroupId=com.example \
  -DartifactId=my-app \
  -DarchetypeArtifactId=maven-archetype-quickstart \
  -DinteractiveMode=false

πŸ“₯ Source - Download Sources

Download source JARs for dependencies.

mvn dependency:sources

Download Javadocs:

mvn dependency:resolve -Dclassifier=javadoc

🎁 Wrapper - Install Maven Wrapper

Install Maven wrapper for project.

mvn wrapper:wrapper

Creates mvnw and mvnw.cmd scripts. Allows building without installing Maven globally.

Specify Maven version:

mvn wrapper:wrapper -Dmaven=3.9.6