How to install Apache Maven on CentOS 7

Share on Social Media

Learn how to install Apache Maven on CentOS 7 with this comprehensive guide. Follow step-by-step instructions to set up Maven for your Java projects efficiently. #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.

Recommended Online Training: Learning Apache Maven

475022 0312 4show?id=oLRJ54lcVEg&offerid=1074530.475022&bids=1074530

Apache Maven Alternatives

Apache Maven is a popular build automation tool, but there are several alternatives available that you might consider depending on your project’s needs. Here are some notable alternatives:

  1. Gradle: Known for its flexibility and performance, Gradle combines the best features of Apache Ant and Apache Maven. It’s particularly popular for Android development.
  2. Apache Ant: An older tool that’s very flexible and configurable. It uses XML to define build processes and is highly customizable, although it can be more complex to set up compared to Maven.
  3. SBT (Simple Build Tool): Mainly used for Scala projects, SBT is designed to integrate seamlessly with the Scala language and ecosystem.
  4. Bazel: Developed by Google, Bazel is known for its speed and ability to handle large-scale builds efficiently. It’s used in many large projects and supports multiple languages.
  5. Leiningen: Focused on Clojure projects, Leiningen simplifies the process of managing dependencies and building projects in the Clojure ecosystem.
  6. Buck: Developed by Facebook, Buck emphasizes the speed of builds and is capable of handling large codebases. It supports multiple programming languages and is highly scalable.
  7. Buildr: A build system for Java-based applications, Buildr aims to be simpler and more flexible than Maven by leveraging Ruby’s capabilities.
  8. Kobalt: A newer build tool that aims to provide modern features and better integration with Kotlin projects.

Choosing the right tool depends on your specific project requirements, language preferences, and the complexity of your build processes. Each of these tools has its strengths and can be the best fit for different scenarios.

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

Linux Server 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.

If you are new to Linux and facing difficulty in working at Linux Bash prompt. We recommend that, you should read The Linux Command Line, 2nd Edition: A Complete Introduction by William Shotts.

Final Thoughts

Installing Apache Maven on CentOS 7 is a straightforward process that enhances your ability to manage Java projects effectively. By following this guide, you should have a fully functional Maven setup ready to use.

If you need further assistance or professional support with your Maven installation or other technical tasks, feel free to check out my services on Fiverr. I offer expert solutions to meet your development needs.

Hire me on Fiverr for professional help and quality service.

Leave a Comment