Maven Build Life Cycles,
Phases and Goals
When Maven builds a
software project it follows a build life cycle. The build life cycle is divided
into build phases, and the build phases are divided into build goals. 
Build Life Cycles
Maven has 3 built-in build life cycles. These are:
Maven has 3 built-in build life cycles. These are:
- default
- clean
- site
Each of these build life cycles takes care
of a different aspect of building a software project. Thus, each of these build
life cycles are executed independently of each other. You can get Maven to
execute more than one build life cycle, but they will be executed in sequence,
separately from each other.
The 
default life cycle
handles everything related to compiling and packaging your project. 
The 
clean life cycle
handles everything related to removing temporary files from the output
directory, including generated source files, compiled classes, previous JAR
files etc. 
The 
site life cycle handles everything related to generating documentation for
your project. In fact, site can
generate a complete website with documentation for your project.
Build Phases
Each build life cycle is divided into a sequence of build phases, and the build phases are again subdivided into goals. Thus, the total build process is a sequence of build life cycle(s), build phases and goals.
Each build life cycle is divided into a sequence of build phases, and the build phases are again subdivided into goals. Thus, the total build process is a sequence of build life cycle(s), build phases and goals.
You can execute either a whole build life
cycle like 
clean or site, a build phase like install which is part of the default build life cycle, or a build goal like dependency:copy-dependencies. Note: You cannot execute the default life cycle directly. You have to specify a build phase
or goal inside the default life
cycle.
When you execute a build phase, all build
phases before that build phase in this standard phase sequence are executed.
Thus, executing the 
install build
phase really means executing all build phases before the install phase, and then execute the install phase after that.| 
Build Phase | 
Description | 
| 
validate | 
Validates that the project is correct
  and all necessary information is available. This also makes sure the
  dependencies are downloaded. | 
| 
compile | 
Compiles the source code of the
  project. | 
| 
test | 
Runs the tests against the compiled
  source code using a suitable unit testing framework. These tests should not
  require the code be packaged or deployed. | 
| 
package | 
Packs the compiled code in its
  distributable format, such as a JAR. | 
| 
install | 
Install the package into the local
  repository, for use as a dependency in other projects locally. | 
| 
deploy | 
Copies the final package to the
  remote repository for sharing with other developers and projects. | 
You execute one of
these build phases by passing its name to the mvn command. 
Here
is an example:
mvn package
This example executes
the package build phase, and thus also all build phases before it
in Maven's predefined build phase sequence.
If the
standard Maven build phases and goals are not enough to build your project, you
can create Maven plugins to add the extra build functionality you
need.
Build Goals
Build goals are the finest steps in the Maven build process. A goal can be bound to one or more build phases, or to none at all. If a goal is not bound to any build phase, you can only execute it by passing the goals name to the mvn command. If a goal is bound to multiple build phases, that goal will get executed during each of the build phases it is bound to.
Build goals are the finest steps in the Maven build process. A goal can be bound to one or more build phases, or to none at all. If a goal is not bound to any build phase, you can only execute it by passing the goals name to the mvn command. If a goal is bound to multiple build phases, that goal will get executed during each of the build phases it is bound to.
 
No comments:
Post a Comment