Maven 插件列表详解

Maven 是一个强大的项目管理和构建工具,广泛应用于 Java 项目中。作为一款优秀的构建管理工具,Maven 不仅提供了标准化的项目结构和依赖管理,还通过其丰富的插件系统,极大地扩展了其功能和灵活性。无论是代码编译、测试、打包,还是部署、报告生成,Maven 插件都扮演着不可或缺的角色。

本文将深入探讨 Maven 的插件体系,详细介绍各类插件的用途、主要目标和适用的生命周期阶段。内容涵盖了 Maven 官方插件、被淘汰的插件、社区驱动的 MojoHaus 插件、国内外企业开发的非官方插件以及如何自定义插件。希望通过这篇文章,读者能更全面地了解 Maven 插件的使用和选择,为项目构建和管理提供更强有力的支持。



1、Maven 框架本质

Maven 本质上是一个插件框架,其核心并不直接执行具体的构建任务,而是将这些任务交由插件完成。比如,编译源代码的任务由 maven-compiler-plugin 插件完成。具体而言,每个任务对应一个插件目标(goal),每个插件可能包含一个或多个目标。例如,maven-compiler-plugin 插件的 compile 目标用于编译位于 src/main/java/ 目录下的主源码,而 testCompile 目标用于编译位于 src/test/java/ 目录下的测试源码。

用户可以通过两种方式调用 Maven 插件目标。第一种方式是将插件目标与生命周期阶段(lifecycle phase)绑定,这样用户只需在命令行中输入生命周期阶段即可。例如,Maven 默认将 maven-compiler-plugincompile 目标与 compile 生命周期阶段绑定,因此,执行命令 mvn compile 实际上是先定位到 compile 生命周期阶段,然后根据绑定关系调用 maven-compiler-plugincompile 目标。第二种方式是直接在命令行中指定要执行的插件目标,例如 mvn archetype:generate,表示调用 maven-archetype-plugingenerate 目标,这种带冒号的调用方式与生命周期无关。

了解 Maven 插件的基本概念有助于理解 Maven 的工作机制,但要更高效地使用 Maven,掌握一些常用的插件也非常重要。这不仅能帮助你避免重复发明轮子,还能大大提升构建效率。多年来,Maven 社区积累了大量经验,形成了一个成熟的插件生态圈。Maven 官方提供了两个插件列表。

  • 第一个列表的 GroupId 为 org.apache.maven.plugins,这些插件最为成熟,其地址为 Maven 官方插件列表
  • 第二个列表的 GroupId 为 org.codehaus.mojo,这些插件虽然没有那么核心,但也非常实用,其地址为 Codehaus Mojo 插件列表

下面将介绍一些常用的 Maven 插件,这些插件在不同环境下都表现出色,熟练使用它们可以让你的日常构建工作事半功倍。


2、Maven 官方插件

2.1、核心插件

Maven Core plugins(核心插件)是 Maven 自带的一些插件,它们在大多数 Maven 构建中都会被使用,并且不需要在 pom.xml 中显式导入就可以使用。核心插件包括一系列用于编译、测试、打包、安装、部署等构建任务的插件

image-20240618095636435

Maven 官方的核心插件共有 9 种:

  • maven-clean-plugin:用于清除项目目录中的垃圾文件和临时文件。主要插件目标 clean:clean 适用于 clean 生命周期阶段;
  • maven-resources-plugin:用于处理项目中的资源文件(复制和过滤资源文件)。主要插件目标 resources:resourcesresources:testResources 适用于 process-resourcesprocess-test-resources 生命周期阶段;
  • maven-compiler-plugin:用于编译项目中的源代码。主要插件目标 compiler:compilecompiler:testCompile 适用于 compiletest-compile 生命周期阶段;
  • maven-surefire-plugin:用于运行项目中的单元测试。主要插件目标 surefire:test 适用于 test 生命周期阶段;
  • maven-failsafe-plugin:用于运行集成测试。主要插件目标 failsafe:integration-testfailsafe:verify 适用于 integration-testverify 生命周期阶段;
  • maven-install-plugin:用于将项目的包安装到本地仓库。主要插件目标 install:install 适用于 install 生命周期阶段;
  • maven-deploy-plugin:用于将项目的包部署到远程仓库。主要插件目标 deploy:deploy 适用于 deploy 生命周期阶段;
  • maven-site-plugin:用于生成项目的站点文档。主要插件目标 site:sitesite:site-deploy 适用于 sitesite-deploy 生命周期阶段;
  • maven-verifier-plugin:用于运行验证任务。主要插件目标 verifier:verify 适用于 verify 生命周期阶段。
2.2、打包类型(工具)

Maven 提供了多种打包插件,用于不同类型的项目和构建需求。

image-20240618102154685

以下是常见的 10 种打包类型插件:

  • maven-ear-plugin:用于创建企业级应用存档(EAR)文件。主要插件目标 ear:ear 适用于 package 生命周期阶段;
  • maven-ejb-plugin:用于创建企业 JavaBeans(EJB)模块。主要插件目标 ejb:ejb 适用于 package 生命周期阶段;
  • maven-jar-plugin:用于创建 Java ARchive(JAR)文件。主要插件目标 jar:jar 适用于 package 生命周期阶段;
  • maven-rar-plugin:用于创建资源适配器存档(RAR)文件。主要插件目标 rar:rar 适用于 package 生命周期阶段;
  • maven-war-plugin:用于创建 Web 应用程序存档(WAR)文件。主要插件目标 war:war 适用于 package 生命周期阶段;
  • maven-app-client-plugin:用于创建应用客户端模块(app-client/acr)。主要插件目标 app-client:app-client 适用于 package 生命周期阶段;
  • maven-shade-plugin:用于打包项目及其所有依赖项到一个可执行的 JAR 文件中。主要插件目标 shade:shade 适用于 package 生命周期阶段;
  • maven-source-plugin:用于打包项目的源代码到一个 JAR 文件中。主要插件目标 source:jar 适用于 package 生命周期阶段;
  • maven-jlink-plugin:用于创建定制的 Java 运行时映像(JRE)。主要插件目标 jlink:jlink 适用于 package 生命周期阶段;
  • maven-jmod-plugin:用于创建 Java 模块文件(JMOD)。主要插件目标 jmod:jmod 适用于 package 生命周期阶段。
2.3、报告插件

Maven 提供了多种报告插件,用于生成项目的各种报告。

image-20240618102625321

以下是常见的 12 种报告插件:

  • maven-changelog-plugin:用于生成项目的变更日志报告。主要插件目标 changelog:changelog 适用于 site 生命周期阶段;
  • maven-changes-plugin:用于生成项目的变更报告和发行说明。主要插件目标 changes:changeschanges:announcement-generate 适用于 site 生命周期阶段;
  • maven-checkstyle-plugin:用于检查 Java 代码是否符合编码规范,并生成报告。主要插件目标 checkstyle:checkstyle 适用于 verify 生命周期阶段;
  • maven-doap-plugin:用于生成 DOAP(Description of a Project)报告。主要插件目标 doap:generate 适用于 site 生命周期阶段;
  • maven-javadoc-plugin:用于生成 JavaDoc 文档。主要插件目标 javadoc:javadocjavadoc:test-javadoc 适用于 site 生命周期阶段;
  • maven-jepts-plugin:用于生成项目的 JEPTS(Java Enterprise Project Testing System)报告。主要插件目标 jepts:generate 适用于 site 生命周期阶段;
  • maven-jxr-plugin:用于生成源代码交叉引用报告。主要插件目标 jxr:jxr 适用于 site 生命周期阶段;
  • maven-linkcheck-plugin:用于检查站点链接是否有效,并生成报告。主要插件目标 linkcheck:linkcheck 适用于 site 生命周期阶段;
  • maven-pmd-plugin:用于执行代码质量检查,并生成 PMD 报告。主要插件目标 pmd:pmdpmd:cpd 适用于 verify 生命周期阶段;
  • maven-plugin-report-plugin:用于生成 Maven 插件的报告。主要插件目标 plugin-report:report 适用于 site 生命周期阶段;
  • maven-project-info-reports-plugin:用于生成项目的各种信息报告。主要插件目标 project-info-reports:project-info 适用于 site 生命周期阶段;
  • maven-surefire-report-plugin:用于生成单元测试报告。主要插件目标 surefire-report:reportsurefire-report:report-only 适用于 site 生命周期阶段。
2.4、工具插件

Maven 提供了多种工具插件,用于不同的构建和管理任务。

image-20240618103147070

以下是常见的工具插件:

  • maven-antrun-plugin:用于在 Maven 构建中执行 Ant 任务。主要插件目标 antrun:run 适用于 compile 生命周期阶段;

  • maven-artifact-plugin:用于管理和操作构建工件。主要插件目标 artifact:resolveartifact:resolve-transitively 适用于 compile 生命周期阶段;

  • maven-archetype-plugin:用于创建 Maven 项目模板(archetypes)。主要插件目标 archetype:generate 适用于 generate-sources 生命周期阶段;

  • maven-assembly-plugin:用于创建包含项目及其依赖项的组装包。主要插件目标 assembly:single 适用于 package 生命周期阶段;

  • maven-dependency-plugin:用于处理项目依赖,包括解析、分析和报告依赖信息。主要插件目标 dependency:copydependency:resolve 适用于 compile 生命周期阶段;

  • maven-enforcer-plugin:用于执行构建时的规则和策略。主要插件目标 enforcer:enforce 适用于 validate 生命周期阶段;

  • maven-gpg-plugin:用于对工件进行签名和验证

  • 81
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 42
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 42
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

栗筝i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值