How to Build Java Application Using Apache Maven

Surya Raj Ghimire
3 min readJun 20, 2023

--

Maven is a powerful build automation tool that is primarily used for java-based projects. Maven is one of the open-source Java build tools developed by Apache Software Foundation. It can compile, test, and package a java program into .jar or .war format.

Apache maven

Installing and Configuring Maven (on developer’s machine)

  1. Install java (pre-requisite)
[root@developer ~]# yum -y install java-11-openjdk
[root@developer ~]# rpm -q java-11-openjdk
java-11-openjdk-11.0.18.0.9-0.3.ea.el8.x86_64

2. Set java home variable

[root@developer ~]# ls /usr/lib/jvm
java-11-openjdk-11.0.18.0.9-0.3.ea.el8.x86_64 jre-11 jre-11-openjdk-11.0.18.0.9-0.3.ea.el8.x86_64
jre jre-11-openjdk jre-openjdk
[root@developer ~]# ls /usr/lib/jvm/java-11-openjdk-11.0.18.0.9-0.3.ea.el8.x86_64/
bin conf legal lib release
[root@developer ~]# echo $JAVA_HOME

[root@developer ~]# echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/root/bin
[root@developer ~]# cd
[root@developer ~]# pwd
/root
[root@developer ~]# ls -a
[root@developer ~]# vim .bashrc
---------------------------------
# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.18.0.9-0.3.ea.el8.x86_64
---------------------------------
[root@developer ~]# source .bashrc
[root@developer ~]# echo $JAVA_HOME
/usr/lib/jvm/java-11-openjdk-11.0.18.0.9-0.3.ea.el8.x86_64

3. Download and install maven

[root@developer ~]# ls /opt/
[root@developer ~]# mkdir -p /opt/maven
[root@developer ~]# cd /opt/maven/
[root@developer maven]# pwd
/opt/maven
[root@developer maven]# yum list maven
[root@developer maven]# wget https://dlcdn.apache.org/maven/maven-3/3.9.2/binaries/apache-maven-3.9.2-bin.tar.gz
[root@developer maven]# ls
apache-maven-3.9.2-bin.tar.gz
[root@developer maven]# tar -zxvf apache-maven-3.9.2-bin.tar.gz
[root@developer maven]# ls
apache-maven-3.9.2 apache-maven-3.9.2-bin.tar.gz
[root@developer maven]# cd apache-maven-3.9.2/
[root@developer apache-maven-3.9.2]# ls
bin boot conf lib LICENSE NOTICE README.txt
[root@developer apache-maven-3.9.2]# pwd
/opt/maven/apache-maven-3.9.2

4. Set maven home path to variable M2_HOME

[root@developer apache-maven-3.9.2]# cd
[root@developer ~]# pwd
/root
[root@developer ~]# ls -a
[root@developer ~]# vim .bashrc
---------------------------------
# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.18.0.9-0.3.ea.el8.x86_64
export M2_HOME=/opt/maven/apache-maven-3.9.2
export PATH=$PATH:$M2_HOME/bin
---------------------------------
[root@developer ~]# . .bashrc
[root@developer ~]# echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/root/bin:/opt/maven/apache-maven-3.9.2/bin
[root@developer ~]# which mvn
/opt/maven/apache-maven-3.9.2/bin/mvn
[root@developer ~]# echo $M2_HOME
/opt/maven/apache-maven-3.9.2

5. To set path variable data for system wide (not user-specific) configuration, add it into /etc/bashrc

 [root@developer ~]# vim /etc/bashrc
---------------------------------
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.18.0.9-0.3.ea.el8.x86_64
export M2_HOME=/opt/maven/apache-maven-3.9.2
export PATH=$PATH:$M2_HOME/bin

Creating and Deploying the Sample Java Web App Using Maven

  1. Create sample java web application
[surya@developer ~]$ whoami
surya
[surya@developer ~]$ pwd
/home/surya
[surya@developer ~]$ mkdir -p /home/surya/javaproj
[surya@developer ~]$ cd /home/surya/javaproj/
[surya@developer javaproj]$ mvn archetype:generate -DgroupId=com.srg -DartifactId=test -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false

2. To check last command successful or not

[surya@developer javaproj]$ echo $?
0

3. Modify the index.jsp file

[surya@developer javaproj]$ ls
test
[surya@developer javaproj]$ cd test/
[surya@developer test]$ pwd
/home/surya/javaproj/test
[surya@developer test]$ ls
pom.xml src
[surya@developer test]$ cat pom.xml
[surya@developer test]$ tree -F
.
├── pom.xml
└── src/
└── main/
├── resources/
└── webapp/
├── index.jsp
└── WEB-INF/
└── web.xml

5 directories, 3 files
[surya@developer test]$ vim src/main/webapp/index.jsp
---------------------------------
<html>
<body>
<h2>Deploying Java Web Application on Tomcat!</h2>
</body>
</html>

4. Packaging the application into war file

[surya@developer test]$ mvn package
[surya@developer test]$ echo $?
0
[surya@developer test]$ ls
pom.xml src target
[surya@developer test]$ ls target/
classes maven-archiver test test.war

5. Deploy the war file on apache tomcat server

--

--