Apache Maven is a software project management/automation tool used primarily for managing Java project’s build, reporting, and documentation from a central piece of information. This tutorial will help you to install Apache Maven on Ubuntu 22.04/20.04/18.04.
Maven exist to help you simplify and standardize all your projects build process. Maven will handle project compilation, distribution, documentation, team collaboration and other tasks seamlessly. It also increases reusability and taking care of most of build related tasks.
Maven data structure:
Item | Default |
---|---|
source code | ${basedir}/src/main/java |
Resources | ${basedir}/src/main/resources |
Tests | ${basedir}/src/test |
Complied byte code | ${basedir}/target |
distributable JAR | ${basedir}/target/classes |
Update system and Install Java
Apache Maven requires the host system to have the Java Development Kit. Install OpenJDK on Ubuntu / Debian.
sudo apt update
sudo apt install -y default-jdk tree
Check your installed Java version using:
$ java -version
openjdk version "11.0.20.1" 2023-08-24
OpenJDK Runtime Environment (build 11.0.20.1+1-post-Ubuntu-0ubuntu122.04)
OpenJDK 64-Bit Server VM (build 11.0.20.1+1-post-Ubuntu-0ubuntu122.04, mixed mode, sharing)
Download and Install Apache Maven
Check the latest release of Apache Maven and save this to a variable:
export VER="3.9.5"
Download the latest release of Apache Maven exported above:
wget https://downloads.apache.org/maven/maven-3/$VER/binaries/apache-maven-$VER-bin.tar.gz
Now extract the downloaded tarball:
tar xvf apache-maven-$VER-bin.tar.gz
Move the resulting directory to /opt
sudo mv apache-maven-$VER /opt/maven
Setup Environment Variables to load Apache Maven
cat <<EOF | sudo tee /etc/profile.d/maven.sh
export MAVEN_HOME=/opt/maven
export PATH=\$PATH:\$MAVEN_HOME/bin
EOF
Source the file
$ source /etc/profile.d/maven.sh
$ echo $MAVEN_HOME
/opt/maven
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/maven/bin
Your $PATH
should have /opt/maven/bin
at the end.
Verify the Installation
Finally, validate that Apache Maven has been installed correctly:
$ mvn --version
Apache Maven 3.9.5 (57804ffe001d7215b5e7bcb531cf83df38f93546)
Maven home: /opt/maven
Java version: 11.0.20.1, vendor: Ubuntu, runtime: /usr/lib/jvm/java-11-openjdk-amd64
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "5.15.0-79-generic", arch: "amd64", family: "unix"
This command should print Maven version and used Java version.
All options are available on:
mvn -h
Create Maven projects directory:
mkdir ~/mvn-projects && cd ~/mvn-projects
Create your first project:
mvn archetype:generate -DgroupId=com.mycompany.app \
-DartifactId=my-app \
-DarchetypeArtifactId=maven-archetype-quickstart \
-DinteractiveMode=false
Since this is the first run, it may take a while to execute. This is because Maven is downloading the most recent artifacts (plugin jars and other files) into your local repository.
On a successful run, you should get output similar to below:
.....
[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Old (1.x) Archetype: maven-archetype-quickstart:1.0
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: basedir, Value: /root/mvn-projects
[INFO] Parameter: package, Value: com.mycompany.app
[INFO] Parameter: groupId, Value: com.mycompany.app
[INFO] Parameter: artifactId, Value: my-app
[INFO] Parameter: packageName, Value: com.mycompany.app
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] project created from Old (1.x) Archetype in dir: /root/mvn-projects/my-app
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 6.396 s
[INFO] Finished at: 2023-09-28T17:36:37Z
[INFO] ------------------------------------------------------------------------
The generate goal
created a directory with the same name given as the artifactId.
$ tree my-app/
my-app/
├── pom.xml
└── src
├── main
│ └── java
│ └── com
│ └── mycompany
│ └── app
│ └── App.java
└── test
└── java
└── com
└── mycompany
└── app
└── AppTest.java
11 directories, 3 files
- The
src/main/java
directory contains the project source code - The
src/test/java
directory contains the test source - The file
pom.xml
is the project’s Project Object Model (POM).
The filepom.xml
is the core of a project’s configuration in Maven. It contains the majority of information required to build a project.
Build the Project
To build your Project, run:
mvn package
The command line will print out various actions, and end with the following:
.....
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3 seconds
[INFO] Finished at: Thu Nov 18 10:39:20 EAT 2018
[INFO] Final Memory: 2M/6M
[INFO] ------------------------------------------------------------------------
That’s all, you have successfully installed Apache Maven on Ubuntu 22.04/20.04/18.04/16.04. Check Official Maven Documentation for further learning.
Great steps! thank you!
Welcome!