How to install Apache Maven on CentOS 7

Share on Social Media

In this configuration guide, you will learn, how to install Apache Maven on CentOS 7 or other Redhat based Linux OS. #centlinux #linux #devops

What is Apache Maven? :

Apache Maven is a build automation and project management tool. Maven primarily build for Java projects, but due to its plugin based architecture, it can be used for C#, Ruby, C, C++, etc projects. Apache Maven projects are build around Project Object Model (POM) and uses an XML file (pom.xml) to describe its software project configurations.

Apache Maven is a widely used build automation and project management tool designed to simplify the process of building and managing Java-based software projects. Developed by the Apache Software Foundation, Maven provides a standard way to structure projects, manage dependencies, and automate the build process.

Key features of Apache Maven include:

  1. Project Object Model (POM): Maven uses a Project Object Model, which is an XML file (pom.xml) that describes the project’s configuration, dependencies, and build settings. This standardized model allows developers to manage projects consistently and share project information easily.
  2. Dependency Management: Maven simplifies the management of project dependencies by automatically downloading and incorporating required libraries (JAR files) from repositories. This helps in maintaining a consistent and easily reproducible build environment.
  3. Build Lifecycle: Maven defines a set of build phases and goals that define the build lifecycle. Developers can execute various tasks, such as compilation, testing, packaging, and deployment, by invoking specific Maven goals.
  4. Plugin Architecture: Maven is extensible through plugins that provide additional functionality. A wide range of plugins is available for tasks like code analysis, testing, reporting, and integration with other tools.
  5. Convention over Configuration: Maven follows the principle of convention over configuration, which means that developers need to follow certain conventions, and Maven will automatically configure the project based on these conventions. This reduces the need for extensive configuration.
  6. Central Repository: Maven uses a central repository for storing and retrieving project dependencies. The central repository is a vast collection of libraries and plugins that can be easily accessed by Maven during the build process.

Developers use Maven by creating a POM file for their projects, specifying dependencies, build settings, and other project information. Maven then automates the build process, fetching dependencies, compiling code, running tests, and creating distributable artifacts.

Overall, Apache Maven is a powerful and widely adopted tool in the Java development ecosystem, contributing to the efficiency, consistency, and repeatability of software builds and project management.

Read Also: How to install Apache Maven on Rocky Linux 9

System Specification:

We have a CentOS 7 virtual machine with following specification:

  • Hostname – appserver-01.example.com
  • IP Address – 192.168.116.130/24
  • Operating System – CentOS 7.6

Install OpenJDK on CentOS 7:

Connect to appserver-01.example.com using ssh.

Apache Maven 3.6 requires Java Development Kit (JDK) 1.7 or above.

We have JDK 1.8 available in CentOS yum repository. Therefore, install it using yum command.

# yum install -y java-1.8.0-openjdk-devel

If you already have another version of Java installed, then use alternatives command to set active java command.

# alternatives --config java

There are 2 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
 + 1           /usr/java/jdk-11.0.1/bin/java
*  2           java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre/bin/java)

Enter to keep the current selection[+], or type selection number: 2

Repeat the above step for javac and jar commands.

Set JAVA_HOME environment variable.

# echo "export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64" >> /etc/profile

Check version of active java command.

# java -version
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)

OpenJDK 1.8 has been installed and configured on our CentOS 7 server.

Install Apache Maven on CentOS 7:

Download Apache Maven 3.6 from https://maven.apache.org/. It is the latest version at the time of this write-up.

# wget https://www-eu.apache.org/dist/maven/maven-3/3.6.0/binaries/apache-maven-3.6.0-bin.tar.gz
--2018-12-25 18:26:42--  https://www-eu.apache.org/dist/maven/maven-3/3.6.0/binaries/apache-maven-3.6.0-bin.tar.gz
Resolving www-eu.apache.org (www-eu.apache.org)... 95.216.24.32, 2a01:4f9:2a:185f::2
Connecting to www-eu.apache.org (www-eu.apache.org)|95.216.24.32|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 9063587 (8.6M) [application/x-gzip]
Saving to: âapache-maven-3.6.0-bin.tar.gzâ

100%[======================================>] 9,063,587    271KB/s   in 28s

2018-12-25 18:27:11 (317 KB/s) - âapache-maven-3.6.0-bin.tar.gzâ saved [9063587/9063587]

Extract Apache Maven tarball to /usr/lib directory.

# tar xf apache-maven-3.6.0-bin.tar.gz -C /usr/lib/

Set Apache Maven environment variables.

# vi /etc/profile

Append following lines at the end of this file.

M2_HOME="/usr/lib/apache-maven-3.6.0"
export M2_HOME

M2="$M2_HOME/bin"
MAVEN_OPTS="-Xms256m -Xmx512m"
export M2 MAVEN_OPTS

PATH=$M2:$PATH
export PATH

Apply these changes to current user session, execute /etc/profile.

# . /etc/profile

Verify the environment variables.

# env | grep M2
M2=/usr/lib/apache-maven-3.6.0/bin
M2_HOME=/usr/lib/apache-maven-3.6.0

Verify Apache Maven installation by executing mvn command.

# mvn -version
Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-24T23:41:47+05:00)
Maven home: /usr/lib/apache-maven-3.6.0
Java version: 1.8.0_191, vendor: Oracle Corporation, runtime: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-957.el7.x86_64", arch: "amd64", family: "unix"

Apache Maven has been successfully installed on our CentOS 7 server.

Conclusion:

In this tutorial, you have learned, how to install Apache Maven on CentOS 7 or other Redhat based Linux OS.