Maven - 插件
什么是Maven插件?
Maven实际上是一个执行插件的框架,其所有的任务其实都是由插件完成。Maven插件通常用于:
- 生成jar包文件
- 生成war包文件
- 编译源码文件
- 代码单元测试
- 生成项目文档
- 生成j项目报告
一个插件通常提供一系列的目标操作,并且目标操作可以通过以下格式的命令执行:
mvn [插件名]:[目标操作名]
例如,一个Java项目可以通过运行下面的命令使用maven-compiler-plugin的compile目标操作编译。
mvn compiler:compile
插件类型
Maven提供了下面两类插件:
类型 | 描述 |
---|---|
构建插件(Build plugins) | 这类插件在构建过程中执行,并且应该配置在pom.xml文件的<build\> 节点中。 |
报告插件(Reporting plugins) | 这类插件在生成站点过程中执行,并且应该配置在pom.xml文件的<reporting/> 节点中。 |
下面是一些常用的插件的列表:
插件 | 描述 |
---|---|
clean | 构建完成后清理目标,删除目标目录。 |
compiler | 编译Java源文件。 |
surefile | 运行JUnit单元测试,生成测试报告。 |
jar | 从当前项目生成JAR文件。 |
war | 从当前项目生成WAR文件。 |
javadoc | 生成项目的Javadoc。 |
antrun | 运行任意指定构建阶段的一系列ant任务。 |
示例
我们已经在我们的例子中大量地使用了maven-antrun-plugin插件来打印数据到控制台。参见 Maven - 构建配置文件 章节。为了更好地理解它,让我们在C:\MVN\project文件夹下新建一个pom.xml文件。
<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>
接下来,打卡开命令控制台并去到包含有pom.xml的文件夹下,然后执行下面的mvn命令。
C:\MVN\project>mvn clean
Maven将会开始处理并且输出clean生命周期的clean阶段的信息。
[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] ------------------------------------------------------------------
上面的例子中阐明了下面几个关键概念:
- 插件在pom.xml文件中是通过plugins节点明确指定的。
- 每个插件可以有多个目标操作。
- 你可以使用phase节点来定义插件从哪个节点开始处理。我们已使用的是clean阶段。
- 你可以通过绑定任务到插件的目标操作来配置要执行的任务。我们已经绑定了echo任务到maven-antrun-plugin插件的run目标操作。
- 以上,Maven会处理剩下的事情。若本地仓库中找不到,Maven会下载插件,并且开始处理。