Maven build life cycle
The build life cycle is divided into build phases, and the build phases are divided into build goals. Every build follows a specified life cycle. Maven comes with a default life cycle that includes the most common build phases like compiling, testing and packaging.
Build Life Cycles
Maven has 3 built-in build life cycles. These are:
default (build) : Used to create the application
clean : Cleans up artifacts that are created by prior builds
site : For the project generates site documentation
Build phase : 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.
The following lists gives an overview of the important Maven life cycle phases.
- validate - checks if the project is correct and all information is available
- compile - compiles source code in binary artifacts
- test - executes the tests
- package - takes the compiled code and package it, for example into a JAR file.
- integration-test - takes the packaged result and executes additional tests, which require the packaging
- verify - performs checks if the package is valid
- install - install the result of the package phase into the local Maven repository
- deploy - deploys the package to a target, i.e. remote repository
mvn
command. Here
is an example:$ mvn compile
This example executes the
compile
build phase, and thus also all build phases
before it in Maven's predefined build phase sequence.Note : Calling a build phase will execute not only that build phase, but also every build phase prior to the called build phase.
Given the build phases above, when the default lifecycle is used, Maven will
- validate the project
- compile the sources
- run those against the tests
- package the binaries (e.g. jar)
- run integration tests against that package
- verify the package
- install the verifed package to the local repository
- deploy the installed package in a specified environment
$ mvn deploy
The following lists all build phases of the default, clean and site lifecycles, which are executed in the order given up to the point of the one specified.
Clean Lifecycle
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 |
Default Lifecycle
validate | validate the project is correct and all necessary information is available. |
initialize | initialize build state, e.g. set properties or create directories. |
generate-sources | generate any source code for inclusion in compilation. |
process-sources | process the source code, for example to filter any values. |
generate-resources | generate resources for inclusion in the package. |
process-resources | copy and process the resources into the destination directory, ready for packaging. |
compile | compile the source code of the project. |
process-classes | post-process the generated files from compilation, for example to do bytecode enhancement on Java classes. |
generate-test-sources | generate any test source code for inclusion in compilation. |
process-test-sources | process the test source code, for example to filter any values. |
generate-test-resources | create resources for testing. |
process-test-resources | copy and process the resources into the test destination directory. |
test-compile | compile the test source code into the test destination directory |
process-test-classes | post-process the generated files from test compilation, for example to do bytecode enhancement on Java classes. For Maven 2.0.5 and above. |
test | run tests using a suitable unit testing framework. These tests should not require the code be packaged or deployed. |
prepare-package | perform any operations necessary to prepare a package before the actual packaging. This often results in an unpacked, processed version of the package. (Maven 2.1 and above) |
package | take the compiled code and package it in its distributable format, such as a JAR. |
pre-integration-test | perform actions required before integration tests are executed. This may involve things such as setting up the required environment. |
integration-test | process and deploy the package if necessary into an environment where integration tests can be run. |
post-integration-test | perform actions required after integration tests have been executed. This may including cleaning up the environment. |
verify | run any checks to verify the package is valid and meets quality criteria. |
install | install the package into the local repository, for use as a dependency in other projects locally. |
deploy | done in an integration or release environment, copies the final package to the remote repository for sharing with other developers and projects. |
Site Lifecycle
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 |
References
No comments:
Post a Comment