Maven is based around the central concept of a build lifecycle. What this means is that the process for building and distributing a particular artifact (project) is clearly defined.
For the person building a project, this means that it is only necessary to learn a small set of commands to build any Maven project, and the POM will ensure they get the results they desired.
There are three built-in build lifecycles: default, clean and site. The default
lifecycle handles your project deployment, the clean
lifecycle handles project cleaning, while the site
lifecycle handles the creation of your project’s site documentation.
Each of these build lifecycles is defined by a different list of build phases, wherein a build phase represents a stage in the lifecycle.
For example, the default lifecycle comprises of the following phases:
validate
– validate the project is correct and all necessary information is availablecompile
– compile the source code of the projecttest
– test the compiled source code using a suitable unit testing framework. These tests should not require the code be packaged or deployedpackage
– take the compiled code and package it in its distributable format, such as a JAR.verify
– run any checks on results of integration tests to ensure quality criteria are metinstall
– install the package into the local repository, for use as a dependency in other projects locallydeploy
– done in the build environment, copies the final package to the remote repository for sharing with other developers and projects.
The clean lifecycle comprises of the following phases:
- pre-clean – execute processes needed prior to the actual project cleaning
- clean – remove all files generated by the previous build
- post-clean – execute processes needed to finalize the project cleaning
The site lifecycle comprises of the following phases:
- pre-site – execute processes needed prior to the actual project site generation
- site – generate the project’s site documentation
- post-site – execute processes needed to finalize the site generation, and to prepare for site deployment
- site-deploy – deploy the generated site documentation to the specified web server