Java Tools and Frameworks - Introduction To Maven


350,000 Learners are learning everyday with our Best Selling Courses : Microservices, Spring, Spring Boot, Web Services, Hibernate, Full Stack React, Full Stack Angular, Python, Spring Interview Guide, Java Interview, Java Functional Programming, AWS, Docker, Kubernetes, PCF, AWS Fargate and Azure

In this article, we get a brief introduction to Maven, and see how it helps in managing project dependencies.

You will learn

  • What is Maven?
  • Why do we need Maven in the Java World?
  • How does Maven do dependency management?
  • How does Maven help you to build and deploy projects?

Free Courses - Learn in 10 Steps

Java Programmer Essentials

As we go towards microservices architectures, what should a Java Programmer learn?

This is the fourth article in series of six articles on Java Programmer Essentials :

What Is Maven?

When we develop a Java software project, such as a microservice, the major dependencies we need are:

  • Spring MVC framework.
  • Spring framework
  • Hibernate

In addition to these 3 direct dependencies, we need to include their individual dependencies as well. So we need the dependencies of Spring MVC, Spring and Hibernate.

Let’s consider an example: REST API typically returns JSON responses. Spring MVC needs to convert Java Bean to JSON. It makes use of the Jackson framework to do the conversion. Jackson framework is a dependency of Spring MVC.

What if I manually download all the jars?

It is quite a task at project start-up, because you need to download a large number of JARs in the proper way, and set them up in the project folder.

The flip side of doing this manually is that each time there is a change in version of a dependency, you need to manually download the new version of dependency and its dependencies again.

Enter Maven

Maven provides dependency management. Any Maven project contains a file called pom.xml. In this file, we specify the dependencies that we need. This is done within the tag.

Example pom.xml

Within each tag, we specify the dependency we need for an application to work. Maven reads this pom.xml file, downloads the dependencies and transitive dependencies (dependencies of dependencies) , and makes them available for your project.

image info

Dependency Management With Maven

Identifying Artifacts

In order to describe each of the artifacts stored here, Maven uses two tags - and . In addition to that, there is also a version that is maintained for each artifact. using these 3 identifiers, Maven can retrieve the correct version of the required dependency.

Managing Transitive Dependencies

When Maven downloads a particular artifact, it also downloads those dependencies of this artifact that are needed in the project. These are known as transitive dependencies. This reduces the amount of effort that is spent on enumerating all the artifacts.

Maven Does A Lot More!

The truth is in the Java world, Maven does a lot more than just dependency management.

Building Deployable unit - Jars and Wars

Suppose we want to deploy an application to a different environment. We do not want to take the source code and build it again!

We can create an application deployable unit JAR/WAR/EAR and use it in other environments. Maven enables us to create application deployable unit in a simple way.

This entire sequence is called a build process, thereby making Maven a build tool as well.

Summary

In this article, we had an introduction on Maven. Maven is primarily used as a dependency management tool. In a large Java project, managing application dependencies manually is a daunting task. Maven steps up by automating the dependency identification and download process. Maven is also used in the Java world as an efficient build tool.

Do check out our video on the same topic:

image info

What to Learn Next?

350,000 Learners are learning everyday with our Best Selling Courses : Microservices, Spring, Spring Boot, Web Services, Hibernate, Full Stack React, Full Stack Angular, Python, Spring Interview Guide, Java Interview, Java Functional Programming, AWS, Docker, Kubernetes, PCF, AWS Fargate and Azure


85,000 Subscribers are learning from our Free Videos on YouTube : JSP Servlets, Spring, Spring Boot, Spring MVC, Hibernate, Eclipse, Maven, JUnit, Mockito, Full Stack - React, Full Stack - Angular, Docker, Kubernetes, AWS, AWS Fargate, PCF and Azure


Here are the recommend articles to read next : Spring Interview Questions, Spring Boot Interview Questions, Microservices, Hibernate, Spring Security, REST API with Spring Boot, Full Stack with React, SOAP Web Services, Exception Handling, Embedded Servers, Spring Data Rest, Spring vs Spring MVC vs Spring Boot, Building Web Application and Spring Data JPA. You can checkout all our 100+ articles here - All Articles.


Do not know where to start your learning journey? Check out our amazing learning paths: Learning Path 01 - Spring and Spring Boot Web Applications and API Developer, Learning Path 02 - Full Stack Developer with Spring Boot, React & Angular, Learning Path 03 - Cloud Microservices Developer with Docker and Kubernetes, Learning Path 04 - Learn Cloud with Spring Boot, AWS, Azure and PCF and Learning Path 05 - Learn AWS with Microservices, Docker and Kubernetes


Related Posts

Deploy Java Spring Boot Applications to AWS, Azure, GCP with Docker and Kubernetes

In this article, we focus our attention on the cloud. How to learn the cloud and deploy Java Spring Boot Applications to AWS, Azure, GCP with Docker and Kubernetes?

Software Design - Single Responsibility Principle - with examples

For me, Single Responsibility Principle is the most important design principle. What is Single Responsibility Principle? How do you use it? How does it help with making your software better? Let's get started.

Spring Boot Tutorials for Beginners

At in28Minutes, we are creating a number of tutorials with videos, articles & courses on Spring Boot for Beginners and Experienced Developers. This resources will help you learn and gain expertise at Spring Boot.

Microservices with Spring Boot and Java - Part 1 - Getting Started

Let's learn the basics of microservices and microservices architectures. We will also start looking at a basic implementation of a microservice with Spring Boot. We will create a couple of microservices and get them to talk to each other using Eureka Naming Server and Ribbon for Client Side Load Balancing. In part 1 of this series, lets get introduced to the concept of microservices and understand how to create great microservices with Spring Boot and Spring Cloud.

20+ Spring Boot Projects with Code Examples

At in28Minutes, we have created more than 20 projects with code examples on Github. We have 50+ articles explaining these projects. These code examples will you learn and gain expertise at Spring Boot.

REST API Best Practices - With Design Examples from Java and Spring Web Services

Designing Great REST API is important to have great microservices. How do you design your REST API? What are the best practices?

Index - 500+ Videos

At in28Minutes, we are creating a number of tutorials with videos, articles & courses on Spring Boot for Beginners and Experienced Developers. Here's a list of video tutorials and courses for you

Creating Spring Boot and React Java Full Stack Application with Maven

This guide helps you create a Java full stack application with all the CRUD (Create, Read, Update and Delete) features using React as Frontend framework and Spring Boot as the backend REST API. We use Maven as the build tool.

Creating a SOAP Web Service with Spring Boot Starter Web Services

Let's learn how to create a SOAP Web Service with Spring Boot Starter Web Services. We will take a Contract First approach by definining an XSD and exposing a WSDL from it.