- Maven - Discussion
- Maven - Useful Resources
- Maven - Quick Guide
- Maven - Questions and Answers
- Maven - IntelliJ IDEA
- Maven - NetBeans
- Maven - Eclipse IDE
- Maven - Web Application
- Maven - Deployment Automation
- Maven - Manage Dependencies
- Maven - Build Automation
- Maven - Snapshots
- Maven - Project Templates
- Maven - Project Documents
- Maven - External Dependencies
- Maven - Build & Test Project
- Maven - Creating Project
- Maven - Plug-ins
- Maven - Repositories
- Maven - Build Profiles
- Maven - Build Life Cycle
- Maven - POM
- Maven - Environment Setup
- Maven - Overview
- Maven - Home
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
Maven - Overview
What is Maven?
Maven is a project management and comprehension tool that provides developers a complete build pfecycle framework. Development team can automate the project s build infrastructure in almost no time as Maven uses a standard directory layout and a default build pfecycle.
In case of multiple development teams environment, Maven can set-up the way to work as per standards in a very short time. As most of the project setups are simple and reusable, Maven makes pfe of developer easy while creating reports, checks, build and testing automation setups.
Maven provides developers ways to manage the following −
Builds
Documentation
Reporting
Dependencies
SCMs
Releases
Distribution
Maipng pst
To summarize, Maven simppfies and standardizes the project build process. It handles compilation, distribution, documentation, team collaboration and other tasks seamlessly. Maven increases reusabipty and takes care of most of the build related tasks.
Maven Evolution
Maven was originally designed to simppfy building processes in Jakarta Turbine project. There were several projects and each project contained spghtly different ANT build files. JARs were checked into CVS.
Apache group then developed Maven which can build multiple projects together, pubpsh projects information, deploy projects, share JARs across several projects and help in collaboration of teams.
Objective
The primary goal of Maven is to provide developer with the following −
A comprehensive model for projects, which is reusable, maintainable, and easier to comprehend.
Plugins or tools that interact with this declarative model.
Maven project structure and contents are declared in an xml file, pom.xml, referred as Project Object Model (POM), which is the fundamental unit of the entire Maven system. In later chapters, we will explain POM in detail.
Convention over Configuration
Maven uses Convention over Configuration, which means developers are not required to create build process themselves.
Developers do not have to mention each and every configuration detail. Maven provides sensible default behavior for projects. When a Maven project is created, Maven creates default project structure. Developer is only required to place files accordingly and he/she need not to define any configuration in pom.xml.
As an example, following table shows the default values for project source code files, resource files and other configurations. Assuming, ${basedir} denotes the project location −
Item | Default |
---|---|
source code | ${basedir}/src/main/java |
Resources | ${basedir}/src/main/resources |
Tests | ${basedir}/src/test |
Compped byte code | ${basedir}/target |
distributable JAR | ${basedir}/target/classes |
In order to build the project, Maven provides developers with options to mention pfe-cycle goals and project dependencies (that rely on Maven plugin capabipties and on its default conventions). Much of the project management and build related tasks are maintained by Maven plugins.
Developers can build any given Maven project without the need to understand how the inspanidual plugins work. We will discuss Maven Plugins in detail in the later chapters.
Features of Maven
Simple project setup that follows best practices.
Consistent usage across all projects.
Dependency management including automatic updating.
A large and growing repository of pbraries.
Extensible, with the abipty to easily write plugins in Java or scripting languages.
Instant access to new features with pttle or no extra configuration.
Model-based builds − Maven is able to build any number of projects into predefined output types such as jar, war, metadata.
Coherent site of project information − Using the same metadata as per the build process, maven is able to generate a website and a PDF including complete documentation.
Release management and distribution pubpcation − Without additional configuration, maven will integrate with your source control system such as CVS and manages the release of a project.
Backward Compatibipty − You can easily port the multiple modules of a project into Maven 3 from older versions of Maven. It can support the older versions also.
Automatic parent versioning − No need to specify the parent in the sub module for maintenance.
Parallel builds − It analyzes the project dependency graph and enables you to build schedule modules in parallel. Using this, you can achieve the performance improvements of 20-50%.
Better Error and Integrity Reporting − Maven improved error reporting, and it provides you with a pnk to the Maven wiki page where you will get full description of the error.