Maven's main objective is to allow a developer to comprehend the complete state of a development effort in the shortest period of time.
It does that by:
(1) Making the build process easy.
Maven will shield you from many details,
but it doesn’t eliminate the need to know about the underlying mechanisms.
(2) Providing a uniform build system.
Maven builds a project using its project object model (POM) and a set of plugins.
If you understand how one Maven project works, you know how all of them work.
(3) Providing quality project information, such as
change-log created directly from source control,
dependencies used by the project,
unit test reports including coverage.
(4) Encouraging better development practices.
Standard directory layout.
Good testing practices with
separate test source code,
naming conventions to locate and execute tests,
test cases that setup their environment.
What is a package manager?
A package manager is a tool that automates the process of installing, upgrading, configuring, and removing software programs and libraries from a computer system in a consistent manner.
We don't want to store large binary files in our git repository.
We need help to handle complex dependency trees as projects get more complex.
We want to easily find and download the packages we need.
We want to easily understand which packages (and their specific versions) a project uses. Package managers establish a shared convention for managing libraries.
We want to compartmentalize the installation of dependencies.