Maven is the most commonly used build tool in the Java world. Mainly, it's just a plugin execution framework in which all jobs are implemented by plugins.
In this tutorial, we'll give an introduction to the core Maven plugins, providing links to other tutorials focusing on what these plugins can do and how their goals are bound to the build lifecycles.
2. Maven Build Lifecycles
Core plugins closely relate to the build lifecycles.
Maven defines three build lifecycles: default, site and clean. Each lifecycle is composed of multiple phases, which run in order up to the phase specified in the mvn command.
The most important lifecycle is default, responsible for all steps in the build process, from project validation to package deployment.
The site lifecycle is in charge of building a site, showing Maven related information of the project, whereas the clean lifecycle takes care of removing files generated in the previous build.
Many phases in all three lifecycles are automatically bound to the goals of core plugins. The referenced articles will go over these goals and the built-in bindings in detail.
All plugins are enclosed in a build element of the POM:
<build> <plugins> <!-- plugins go here --> </plugins> </build>
3. Plugins Bound to the Default Lifecycle
The built-in bindings of the default lifecycle are dependent on the value of the POM's packaging element. For the sake of brevity, we'll go over bindings of the most common packaging types: jar and war.
Here's a list of the goals that are bound to each phase of the default lifecycle in the format “phase -> plugin:goal”:
- process-resources -> resources:resources
- compile -> compiler:compile
- process-test-resources -> resources:testResources
- test-compile -> compiler:testCompile
- test -> surefire:test
- package -> ejb:ejb or ejb3:ejb3 or jar:jar or par:par or rar:rar or war:war
- install -> install:install
- deploy -> deploy:deploy
The goals above are contained in the following plugins. Follow the links for an article on each of the plugins:
4. Other Plugins
In addition to the plugins mentioned in the previous section, there are two other core plugins whose goals are bound to phases of the site and clean lifecycles:
In this article, we went over Maven build lifecycles and provided references to tutorials covering the core plugins of the Maven build tool in detail.
The code examples of most of the referenced articles can be found over on GitHub.