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