What is Apache Maven ?

Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of Information.

apche maven

Maven is an automation and management tool developed by Apache Software Foundation. It was initially released on 13 July 2004. In Yiddish language the meaning of Maven is "accumulator of knowledge".

It is written in Java Language and used to build and manage projects written in C#, Ruby, Scala, and other languages. It allows the developer to create projects using Project Object Model and plugins.

I used the maven to compile and package my storm topology to run on storm cluster both in production mode and local mode.

Maven provides developers ways to manage the following:
  • Builds
  • Documentation
  • Reporting
  • Dependencies
  • SCMs
  • Releases
  • Distribution
  • mailing list

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 details.

Developers don't need to say every last design detail. Expert gives sensible default conduct to ventures. At the point when a Maven extend is made, Maven makes default extend structure. Developer is just required to put records in like manner and he/she require not to characterize any design in "pom.xml".

Dependency management:

It is a concept of maintain jars of a project, maintain child jars and parent jars (dependency-chaining) maintain proper version of all jars (dependency-version)
Library : It is collection of Jars.

groupId (jar provider/companyname) 
artifactId (jar name)
version (jar version). 

Maven maintains all jars as Library also called as Maven Library.
Default structure provided by Maven for a project 

 Feature Summary

The following are the key features of Maven in a nutshell:

1) Simple project setup that follows best practices - get a new project or module started in seconds

2)  Consistent usage across all projects - means no ramp up time for new developers coming onto a project

3) Superior dependency management including automatic updating, dependency closures (also known as transitive dependencies)

4)  Able to easily work with multiple projects at the same time

5)  Model based builds: Maven is able to build any number of projects into predefined output types such as a JAR, WAR, or distribution based on metadata about the project, without the need to do any scripting in most cases.

6) Coherent site of project information: Using the same metadata as for the build process, Maven is able to generate a web site or PDF including any documentation you care to add, and adds to that standard reports about the state of development of the project. Examples of this information can be seen at the bottom of the left-hand navigation of this site under the "Project Information" and "Project Reports" submenus.

7) Release management and distribution publication: Without much additional configuration, Maven will integrate with your source control system (such as Subversion or Git) and manage the release of a project based on a certain tag. It can also publish this to a distribution location for use by other projects. Maven is able to publish individual outputs such as a JAR, an archive including other dependencies and documentation, or as a source distribution.

8) Dependency management: Maven encourages the use of a central repository of JARs and other dependencies. Maven comes with a mechanism that your project's clients can use to download any JARs required for building your project from a central JAR repository much like Perl's CPAN. This allows users of Maven to reuse JARs across projects and encourages communication between projects to ensure that backward compatibility issues are dealt with. 

 Maven Installation In Ubuntu

References :

No comments:

Post a Comment