Maven - Maven Introduction - maven tutorial
What is Maven?
- Maven is a powerful project management tool that is based on POM (project object model). It is used for projects build, dependency and documentation.
- It shortens the build process like ANT. But it is much advanced than ANT.
- 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 life 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
- Mailing list
- To summarize, Maven simplifies and standardizes the project build process.
- It handles compilation, distribution, documentation, team collaboration and other tasks seamlessly.
- Maven increases reusability and takes care of most of the build related tasks.
![learn maven tutorial - apache maven - Apache Maven example programs](https://wikitechy.com/tutorials/maven/img/maven-images/maven.png)
learn maven tutorial - apache maven - Apache Maven example programs
![learn maven tutorial - what is maven - Apache Maven example programs](https://wikitechy.com/tutorials/maven/img/maven-images/what-is-maven.jpg)
learn maven tutorial - what is maven - Apache Maven example programs
Maven Evolution
- Maven was originally designed to simplify building processes in Jakarta Turbine project.
- There were several projects and each project contained slightly different ANT build files. JARs were checked into CVS.
- Apache group then developed Maven which can build multiple projects together, publish projects information, deploy projects, share JARs across several projects and help in collaboration of teams.
maven tutorial tags : apache maven , maven repository , maven central
Convention over Configuration
- Maven uses Convention over Configuration, which means developers are not required to generate 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 |
Complied byte code | ${basedir}/target |
distributable JAR | ${basedir}/target/classes |
- In order to build the project, Maven offers developers with options to mention life-cycle goals and project dependencies.
- Most 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 individual plugins work.
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.
![learn maven tutorial - maven project life cycle - Apache Maven example programs](https://wikitechy.com/tutorials/maven/img/maven-images/Learn-maven.png)
learn maven tutorial - maven project life cycle - Apache Maven example programs
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 libraries.
- Extensible, with the ability to easily write plugins in Java or scripting languages.
- Instant access to new features with little 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 publication − Without additional configuration, maven will integrate with your source control system such as CVS and manages the release of a project.
- Backward Compatibility − 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 link to the Maven wiki page where you will get full description of the error.
How Maven works :
![learn maven tutorial - what is maven - maven example programs](https://wikitechy.com/tutorials/maven/img\maven-images/how-maven-works.png)
learn maven tutorial - what is maven - maven example programs
Maven commands - Maven Cheatsheet :
![learn maven tutorial - maven project-apache maven commands shortcuts - Apache Maven example programs](https://wikitechy.com/tutorials/maven/img/maven-images/maven-cheatsheet-learn-maven.png)
learn maven tutorial - apache maven - maven project - apache maven commands shortcuts - Apache Maven example programs
Maven - Archetype:
![learn maven tutorial - what is archetype - maven example programs](https://wikitechy.com/tutorials/maven/img\maven-images/what-is-archetype.png)
learn maven tutorial - what is archetype - maven example programs
Maven - plugins:
![learn maven tutorial - what is plugin - maven example programs](https://wikitechy.com/tutorials/maven/img\maven-images/what-is-plugin.png)
learn maven tutorial - what is plugin - maven example programs
Maven - Goals :
![learn maven tutorial - what is goals - maven example programs](https://wikitechy.com/tutorials/maven/img\maven-images/what-is-goals.png)
learn maven tutorial - what is goals - maven example programs
What is POM :
![learn maven tutorial - What is POM - maven example programs](https://wikitechy.com/tutorials/maven/img\maven-images/what-is-pom.png)
learn maven tutorial - What is POM - maven example programs