Maven Plugin
What are Maven Plugins?
Maven is actually a plugin execution framework where every task is actually done by plugins. Maven Plugins are generally used to −- create jar file
- create war file
- compile code files
- unit testing of code
- create project documentation
- create project reports
mvn [plugin-name]:[goal-name]For example, a Java project can be compiled with the maven-compiler-plugin's compile-goal by running the following command.
mvn compiler:compile
Plugin Types
Maven provided the following two types of Plugins −| Sr.No. | Type & Description |
|---|---|
| 1 | Build plugins They execute during the build process and should be configured in the <build/> element of pom.xml. |
| 2 | Reporting plugins They execute during the site generation process and they should be configured in the <reporting/> element of the pom.xml. |
| Sr.No. | Plugin & Description |
|---|---|
| 1 | clean Cleans up target after the build. Deletes the target directory. |
| 2 | compiler Compiles Java source files. |
| 3 | surefire Runs the JUnit unit tests. Creates test reports. |
| 4 | jar Builds a JAR file from the current project. |
| 5 | war Builds a WAR file from the current project. |
| 6 | javadoc Generates Javadoc for the project. |
| 7 | antrun Runs a set of ant tasks from any phase mentioned of the build. |
We've used maven-antrun-plugin extensively in our examples to print data on console. Refer Build Profiles chapter. Let us understand it in a better way and create a pom.xml in C:\MVN\project folder.
<project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.companyname.projectgroup</groupId> <artifactId>project</artifactId> <version>1.0</version> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <version>1.1</version> <executions> <execution> <id>id.clean</id> <phase>clean</phase> <goals> <goal>run</goal> </goals> <configuration> <tasks> <echo>clean phase</echo> </tasks> </configuration> </execution> </executions> </plugin> </plugins> </build> </project>Next, open the command console and go to the folder containing pom.xml and execute the following mvn command.
C:\MVN\project>mvn cleanMaven will start processing and displaying the clean phase of clean life cycle.
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------
[INFO] Building Unnamed - com.companyname.projectgroup:project:jar:1.0
[INFO] task-segment: [post-clean]
[INFO] ------------------------------------------------------------------
[INFO] [clean:clean {execution: default-clean}]
[INFO] [antrun:run {execution: id.clean}]
[INFO] Executing tasks
[echo] clean phase
[INFO] Executed tasks
[INFO] ------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------
[INFO] Total time: < 1 second
[INFO] Finished at: Sat Jul 07 13:38:59 IST 2012
[INFO] Final Memory: 4M/44M
[INFO] ------------------------------------------------------------------
The above example illustrates the following key concepts −- Plugins are specified in pom.xml using plugins element.
- Each plugin can have multiple goals.
- You can define phase from where plugin should starts its processing using its phase element. We've used clean phase.
- You can configure tasks to be executed by binding them to goals of plugin. We've bound echo task with run goal of maven-antrun-plugin.
- Maven will then download the plugin if not available in local repository and start its processing.
Comments
Post a Comment