Maven插件安装配置与常见使用教程
时间:2026-08-13 | 作者:冻月看渠 | 阅读:0Ma ven 插件是扩展 Ma ven 功能的可执行组件,每个插件包含一个或多个目标(goals),用于执行特定任务(如编译、测试、打包等)。
插件与生命周期的关系:
生命周期(Lifecycle):定义构建阶段(phase)的顺序
插件(Plugin):提供具体实现(goal)来完成这些阶段的任务
Ma ven 有以下三个标准的生命周期:
- clean:项目清理的处理
- default(或 build):项目部署的处理
- site:项目站点文档创建的处理
每个生命周期中都包含着一系列的阶段(phase)。这些 phase 就相当于 Ma ven 提供的统一的接口,然后这些 phase 的实现由 Ma ven 的插件来完成。
平时输入 mvn 命令时,比如 mvn clean,这里的 clean 指向的其实就是 Clean 生命周期里的 clean 阶段。不过,真正把清理动作落到实处的,并不是这个阶段名称本身,而是 ma ven-clean-plugin。
所以说 Ma ven 生命周期的每一个阶段的具体实现都是由 Ma ven 插件实现的。
Ma ven 实际上是一个依赖插件执行的框架,每个任务实际上是由插件完成。Ma ven 插件通常被用来:
- 创建 jar 文件
- 创建 war 文件
- 编译代码文件
- 代码单元测试
- 创建工程文档
- 创建工程报告
插件通常提供了一个目标的集合,并且可以使用下面的语法执行:
mvn [plugin-name]:[goal-name]
例如,一个 Ja va 工程可以使用 ma ven-compiler-plugin 的 compile-goal 编译,使用以下命令:
mvn compiler:compile
插件核心机制
插件坐标
与依赖类似,插件也通过 groupId、artifactId、version 唯一标识:
| 属性 | 说明 | 常见值 |
|---|---|---|
groupId | 插件组织 | org.apache.ma ven.plugins(官方插件) |
artifactId | 插件名称 | ma ven-compiler-plugin |
version | 插件版本 | 3.8.1 |
插件目标(Goals)
每个插件可以包含多个目标,例如:
ma ven-compiler-plugin:compile:编译主代码testCompile:编译测试代码
ma ven-surefire-plugin:test:运行单元测试
插件绑定方式
1、内置绑定
Ma ven 已为生命周期阶段预绑定插件目标:
| 生命周期阶段 | 绑定的插件目标 |
|---|---|
compile | ma ven-compiler-plugin:compile |
test | ma ven-surefire-plugin:test |
package | ma ven-jar-plugin:jar(或 ma ven-war-plugin:war) |
2、自定义绑定
在 pom.xml 中显式配置:
org.apache.ma ven.plugins
ma ven-compiler-plugin
3.8.1
compile
compile
常用官方插件
编译相关
| 插件 | 作用 | 常用目标 |
|---|---|---|
ma ven-compiler-plugin | 编译 Ja va 代码 | compile, testCompile |
ma ven-resources-plugin | 处理资源文件 | resources, testResources |
配置示例:
org.apache.ma ven.plugins
ma ven-compiler-plugin
3.8.1
11
11
测试相关
| 插件 | 作用 | 常用目标 |
|---|---|---|
ma ven-surefire-plugin | 运行单元测试 | test |
ma ven-failsafe-plugin | 运行集成测试 | integration-test |
跳过测试配置:
org.apache.ma ven.plugins
ma ven-surefire-plugin
2.22.2
true
打包相关
| 插件 | 作用 | 常用目标 |
|---|---|---|
ma ven-jar-plugin | 打包 JAR 文件 | jar |
ma ven-war-plugin | 打包 WAR 文件 | war |
ma ven-assembly-plugin | 自定义打包 | single |
可执行 JAR 配置:
org.apache.ma ven.plugins
ma ven-jar-plugin
3.2.0
com.example.Main
部署相关
| 插件 | 作用 | 常用目标 |
|---|---|---|
ma ven-install-plugin | 安装到本地仓库 | install |
ma ven-deploy-plugin | 部署到远程仓库 | deploy |
插件调用方式
通过生命周期调用:
mvn compile # 触发 ma ven-compiler-plugin:compile直接调用插件目标:
mvn compiler:compile # 直接调用编译目标命令行参数配置:
mvn compiler:compile -Dma ven.compiler.source=11
自定义插件配置
参数配置
通过 configuration 标签设置:
org.apache.ma ven.plugins
ma ven-surefire-plugin
2.22.2
**/*Test.ja va
多目标执行:
run-tests
test
test
插件开发基础
Mojo 概念
插件目标对应的 Ja va 类称为 Mojo(Ma ven plain Old Ja va Object)。
必须继承
AbstractMojo并实现execute()方法。
简单插件示例
实例
@Mojo(name = "greet", defaultPhase = LifecyclePhase.COMPILE)
public class GreetingMojo extends AbstractMojo {
@Parameter(property = "name", defaultValue = "World")
private String name;
public void execute() throws MojoExecutionException {
getLog().info("Hello, " + name + "!");
}
}
打包和安装插件
mvn clean install # 将插件安装到本地仓库
插件类型
Ma ven 提供了下面两种类型的插件:
| 类型 | 描述 |
|---|---|
| Build plugins | 在构建时执行,并在 pom.xml 的 元素中配置。 |
| Reporting plugins | 在网站生成过程中执行,并在 pom.xml 的 元素中配置。 |
下面是一些常用插件的列表:
| 插件 | 描述 |
|---|---|
| clean | 构建之后清理目标文件。删除目标目录。 |
| compiler | 编译 Ja va 源文件。 |
| surefile | 运行 JUnit 单元测试。创建测试报告。 |
| jar | 从当前工程中构建 JAR 文件。 |
| war | 从当前工程中构建 WAR 文件。 |
| ja vadoc | 为工程生成 Ja vadoc。 |
| antrun | 从构建过程的任意一个阶段中运行一个 ant 任务的集合。 |
实例
前面的示例里,其实已经多次用到 ma ven-antrun-plugin,主要就是把数据输出到控制台。相关内容可以结合 Ma ven - 构建配置文件 这一章一起看。为了把这部分讲得更清楚,下面换一种更直观的方式来理解:先在 C:MVNproject 目录下创建一个 pom.xml 文件。
4.0.0
com.companyname.projectgroup
project
1.0
org.apache.ma ven.plugins
ma ven-antrun-plugin
1.1
id.clean
clean
run
clean phase
接下来,打开命令终端跳转到 pom.xml 所在的目录,并执行下面的 mvn 命令。
mvn clean
Ma ven 将开始处理并显示 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 任务到 ma ven-antrun-plugin 的 run 目标。
- 就是这样,Ma ven 将处理剩下的事情。它将下载本地仓库中获取不到的插件,并开始处理。
免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。
相关文章
更多-
- Java异常处理实战:从体系架构到健壮性设计全解
- 时间:2026-08-27
-
- 基于Spring Security实现自动登录的完整指南
- 时间:2026-08-27
-
- VS Code Java开发高效配置清单(可直接复制使用)
- 时间:2026-08-27
-
- JavaSwing实现自定义TablePanel组件(附完整代码)
- 时间:2026-08-27
-
- Java基础攻略:输入输出、方法与数组实战指南
- 时间:2026-08-27
-
- Java反射、枚举、Lambda表达式及泛型通配符实例详解
- 时间:2026-08-27
-
- 30个经典算法题及Java解答(含实例代码)
- 时间:2026-08-27
-
- Spring Data JPA 查询实战:方法命名与 @Query 注解详解
- 时间:2026-08-27
精选合集
更多大家都在玩
大家都在看
更多-
- 为什么湿头发更容易断裂 蚂蚁庄园今日答案9.15
- 时间:2026-09-14
-
- 蚂蚁庄园今天答题答案2026年9月15日
- 时间:2026-09-14
-
- 蚂蚁庄园答题今日答案2026年9月15日
- 时间:2026-09-14
-
- 蚂蚁庄园小课堂2026年9月15日最新题目答案
- 时间:2026-09-14
-
- 小鸡答题今天的答案是什么2026年9月15日
- 时间:2026-09-14
-
- 蚂蚁庄园每日答题答案2026年9月15日
- 时间:2026-09-14
-
- 糖尿病患者禁食所有含糖食物吗 蚂蚁庄园今日答案9月15日
- 时间:2026-09-14
-
- 2026年9月14日蚂蚁新村答案
- 时间:2026-09-14

