Table of contents
1.
Introduction
2.
Uses and Benefits of Maven Plugin
3.
Build Lifecycles in Maven
4.
Core Maven Plugins
5.
Some Key Concepts
6.
Frequently Asked Questions
6.1.
What do you understand by the Maven Build cycle?
6.2.
How to determine the version of Maven installed in our system?
6.3.
What is a Maven repository?
7.
Conclusion
Last Updated: Mar 27, 2024
Easy

Introduction To Maven Plugins

Author Lokesh Sharma
1 upvote
Career growth poll
Do you think IIT Guwahati certified course can help you in your career?

Introduction

Hey Ninja! Welcome back to another exciting blog by Coding Ninjas. Today, we will be discussing Maven Plugins. We will understand the Maven Build Lifecycles and plugins related to it. After reading this blog, you will become familiar with Maven Plugins and their importance.

We know that Maven is the ultimate java project management tool. But do you know that Maven defines itself as a plugin execution framework? A plugin performs almost every task in Maven. Let us understand this vital part of the Maven framework in detail.

Introduction to Maven Plugins

A plugin is a software component that gives additional functionality to the program. You can consider a plugin as an add-on or extension. A Plugin reuses the common build logic across several projects. This thing makes it an essential part of Maven as it provides the feature of code reusability. 

Let us look at some of the benefits of Maven plugins.

Uses and Benefits of Maven Plugin

  1. We use plugins to create war/jar/ear files. A war file is used for web applications, a jar file is for linking libraries, and an ear file is used for enterprise applications.
     
  2. Plugins may act as a compiler for java based files.
     
  3. We can use plugins for unit testing in Java. Unit testing is the primary level of functional testing and checks each component of the software individually.
     
  4. It creates project reports as well as documentation. 
     
  5. Plugins provide a more detailed and well-structured way of achieving tasks.
     
  6. It allows the reusability of the standard build logic and reduces code duplication.
     
  7. We write plugins entirely in Java. This way of writing provides generalization to the plugins created.
     

We create a Maven plugin to accomplish a set of goals. These goals may be related to cleaning, compiling, or building files. To run a plugin, we use the mvn keyword followed by the plugin name and its goal. 

Syntax:

 mvn [plugin-name]:[goal-name]

Build Lifecycles in Maven

Maven clearly defines the process of creating and deploying a specific project. It uses Build Lifecycles to achieve this. Every plugin is a part of some build lifecycle. So to better understand the plugins, let us first look at the different lifecycles of Maven.

Maven has mainly three build lifecycles:

  1. Default: It is the most important lifecycle in Maven. It deals with the deployment of the project.
     
  2. Site: This lifecycle handles the website development of the project. 
     
  3. Clean: clean lifecycle manages project cleaning. This clean-up includes clearing previously built projects.
     

All the core Maven plugins revolve around these three lifecycles. Based on these lifecycles, we divide the plugins into two main categories:

  • Build Plugins: Maven executes these plugins during the build phase. These plugins are part of the Default lifecycle. While writing the POM file, we declare these plugins under the <build> element.
    Syntax: 
<build>
    <plugins>
        <!-- plugins go here -->
    </plugins>
</build>.

 

  • Reporting plugins: These plugins get executed during the site generation phase. These plugins are part of the site lifecycle of Maven. We declare these plugins using the <reporting> element inside the POM file.
    Syntax:
<reporting>
    <plugins>
        <!-- plugins go here -->
    </plugins>
</reporting>.

Let us take a look at some of the core Maven plugins.

Core Maven Plugins

Some of the core Maven Plugins are as follows.

  1. Clean:  It is a Build plugin. It cleans up the earlier created project. We can consider it as a part of the clean lifecycle as well.
     
  2. Compiler: This plugin compiles the java files and codes. It is also a Build plugin.
     
  3. Deploy: This Build plugin deploys the project to a remote repository.
     
  4. Javadoc: It is a Reporting plugin that generates the java documentation of the project.
     
  5. Changes: This Reporting plugin tracks changes made in the document.
     
  6. Install: This plugin installs the built artifacts into the local repository of the system.
     
  7. Site: This Build type of plugin creates a website for the current project.
     
  8. War: It creates a war file of the project. Similarly, the jar plugin builds the jar file of the project.
     
  9. antrun: This plugin is a unique build tool that runs ant tasks from any build phase.
     
  10. Surefire: This Build plugin runs JUnit unit tests in an isolated classloader. JUnit is a Java unit testing tool.
     
  11. Pdf: This is a handy plugin tool that creates a pdf of the project documentation.
     

Please note that we create all these plugins inside the POM.xml file. POM stands for Project Object Model. It is nothing more than an XML file that stores information about the project and its configuration. 

We will now discuss some valuable facts and key concepts about plugins.

Some Key Concepts

  1. As stated earlier, we define plugins inside the POM.xml file using the <plugins> element.
     
  2. We can set multiple goals for each plugin. It is possible to assign a different set of tasks to each goal. We bound the tasks to each goal using the <tasks> element.
     
  3. We use the <phase> element to tell the plugin from which phase it should start its execution. 
     
  4. Sometimes, the required plugin is absent on the local system but in some remote repositories. In this case, Maven first installs that plugin and then executes it.
     

Congratulations Ninja! You have successfully understood one of the essential parts of Maven. You have now learned how to build plugins. You also possess knowledge of various plugins and their usage.

Frequently Asked Questions

What do you understand by the Maven Build cycle?

A Maven build cycle decides the order of the execution of tasks. We divide each life cycle into different phases. We follow a sequence while running these phases.

There are three Build lifecycles in Maven clean, default and site. 

How to determine the version of Maven installed in our system?

We can quickly determine the Maven version we use in our system by typing the following command in the console: mvn -- version.

What is a Maven repository?

A Maven repository stores all the Maven projects, library jars, documentation and plugins in a single place. Maven can easily access this stored data. There are three types of repositories in Maven, central, remote, and local.

Conclusion

Hey Ninja! We hope you enjoyed reading this article. We started by understanding Maven plugins. We then discussed the uses and benefits of plugins in Maven. We discussed the various types of plugins and how they are divided based on build lifecycles. We then learned some key concepts and facts about Maven plugins. 

We hope the above discussion helped you understand Maven plugins and their importance in Java project development. If you wish to learn more about Maven and its various components, you can refer to blogs on maven setupconfiguration, and interview questions.

Do visit our website to read more such blogs. Make sure you enroll in our courses. You can take mock testssolve problems, and interview puzzles. Also, you can check out some exciting interview stuff- interview experiences and an interview bundle for placement preparations. Do upvote our blog to help fellow ninjas grow.

Keep Grinding! 🦾

Happy Coding! 💻

Live masterclass