Maven 2: Features
Maven is a high-level, intelligent project management, build and deployment tool provided by Apache's software foundation group. Maven deals with application development lifecycle management. Maven was originally developed to manage and to minimize the complexities of building the Jakarta Turbine project. But its powerful capabilities have made it a core entity of the Apache Software Foundation projects. Actually, for a long time there was a need to standardized project development lifecycle management system and Maven has emerged as a perfect option that meets the needs. Maven has become the de- facto build system in many open source initiatives and it is rapidly being adopted by many software development organizations.
Maven was borne of the very practical desire
to make several projects at Apache work in a consistence manner. So that
developers could freely move between these projects, knowing clearly how they
all worked by understanding how one of them worked.
If a developer spent time understanding how one project built it was intended
that they would not have to go through this process again when they moved on to
the next project. The same idea extends to testing, generating documentation,
generating metrics and reports, testing and deploying. All projects share enough
of the same characteristics, an understanding of which Maven tries to harness in
its general approach to project management.
On a very high level all projects need to be
built, tested, packaged, documented and deployed. There occurs infinite
variation in each of the above mentioned steps, but these variation still occur
within the confines of a well defined path and it is this path that Maven
attempts to present to everyone in a clear way. The easiest way to make a path
clear is to provide people with a set of patterns that can be shared by anyone
involved in a project.
The
key benefit of this approach is that developers can follow one consistent build
lifecycle management process without having to reinvent such processes again.
Ultimately this makes developers more productive, agile, disciplined, and
focused on the work at hand rather than spending time and effort doing grunt
work understanding, developing, and configuring yet another non-standard build
system.
Maven: Features
- Portable: Maven is portable in nature because
it includes:
- Building configuration using maven are portable
to another machine, developer and architecture without any effort
- Non trivial: Maven is non trivial because
all file references need to be relative, environment must be completely
controlled and independent from any specific file system.
- Building configuration using maven are portable
to another machine, developer and architecture without any effort
- Technology: Maven is a simple core concept that is activated through IoC container (Plexus). Everything is done in maven through plugins and every plugin works in isolation (ClassLoader). Plugings are downloaded from a plugin-repository on demand.
Maven's Objectives:
The primary goal of maven is to allow the developers to comprehend
the complete state of a project in the shortest time by using easy build
process, uniform building system, quality project management information (such
as change Log, cross-reference, mailing lists, dependencies, unit test reports,
test coverage reports and many more), guidelines for best practices and
transparent migration to new features. To achieve to this goal Maven attempts to
deal with several areas like:
- It makes the build process easy
- Provides a uniform building system
- Provides quality related project information
- Provides guidelines related to development to meet the best goal.
- Allows transparent migration to new features.