validate the project is correct and all necessary information is available.
initialize build state, e.g. set properties or create directories.
generate any source code for inclusion in compilation.
process the source code, for example to filter any values.
generate resources for inclusion in the package.
copy and process the resources into the destination directory, ready for packaging.
compile the source code of the project.
post-process the generated files from compilation
generate any test source code for inclusion in compilation.
process the test source code, for example to filter any values.
create resources for testing.
copy and process the resources into the test destination directory.
compile the test source code into the test destination directory
post-process the generated files from test compilation
run unit tests using a suitable unit testing framework.
perform any operations necessary to prepare a package before the actual packaging.
jar:jar or war:war
take the compiled code and package it in its distributable format, such as a JAR.
perform actions required before integration tests are executed.
execute integration tests.
perform actions required after integration tests have been executed.
run any checks on results of integration tests to ensure quality criteria are met
install the package into the local repository, for use as a dependency in other projects locally.
copies the final package to the remote repository for sharing with other developers and projects.