博客
关于我
Maven百科 - 项目构建中的生命周期与插件管理
阅读量:799 次
发布时间:2023-02-08

本文共 3333 字,大约阅读时间需要 11 分钟。

Maven 中的三套生命周期与插件管理

Maven 是一个功能强大的构建工具,其核心特征是通过三套独立的生命周期来管理项目构建过程。这些生命周期不仅为开发者提供了灵活的构建选项,还通过插件机制扩展了构建功能。本文将详细介绍 Maven 的三套生命周期以及插件管理的相关知识。


一、Maven 中的三套生命周期

在 Maven 中,生命周期管理是项目构建的核心功能。与传统的单一生命周期不同,Maven 提供了三套独立的生命周期,分别用于不同的构建需求。这些生命周期分别是 cleandefaultsite。以下是对这三套生命周期的详细说明。

1.1 Clean 生命周期

Clean 生命周期的主要目的是清理项目环境,确保构建过程能够顺利进行。该生命周期包含三个阶段:

  • pre-clean:执行清理前需要完成的工作,例如检查和准备。
  • clean:执行清理工作,清除旧的、冗余的或错误的文件。
  • post-clean:执行清理后的后续操作,例如重新生成或刷新相关文件。
  • 1.2 Default 生命周期

    Default 生命周期是构建过程中最核心的部分,包含了从项目验证到最终打包发布的所有必要步骤。其主要阶段包括:

    • validate:验证项目是否正确,确保所有必要信息已准备。
    • initialize:初始化构建环境,准备好所有必要资源。
    • generate-sources:生成需要编译的源代码。
    • process-sources:处理源代码,例如编译或转换。
    • generate-resources:生成需要打包的资源文件。
    • process-resources:处理资源文件,准备打包。
    • compile:编译主源代码。
    • process-classes:处理编译生成的类文件。
    • generate-test-sources:生成测试用源代码。
    • process-test-sources:处理测试源代码。
    • generate-test-resources:生成测试用资源文件。
    • process-test-resources:处理测试资源文件。
    • test-compile:编译测试代码。
    • process-test-classes:处理测试编译文件。
    • test:执行测试。
    • prepare-package:准备打包。
    • package:将编译好的代码打包成需要格式。
    • pre-integration-test:执行集成测试前的准备工作。
    • integration-test:处理并发布到集成测试环境。
    • post-integration-test:执行集成测试后的后续工作。
    • verify:验证构建结果,确保包有效。
    • install:将包安装到本地仓库。
    • deploy:将包发布到远程仓库。

    1.3 Site 生命周期

    Site 生命周期的主要目的是为项目生成和发布站点。Maven 可以基于 POM 文件自动生成友好的站点,方便团队交流和信息发布。该生命周期包含以下四个阶段:

  • pre-site:执行项目生成前的准备工作。
  • site:生成项目站点文档。
  • post-site:执行生成站点后的后续工作。
  • site-deploy:将生成的站点发布到服务器上。
  • 1.4 命令行与生命周期

    通过 Maven 的命令行,可以看到生命周期的执行方式是通过调用生命周期的阶段。例如,mvn test 会调用 default 生命周期的 test 阶段,而实际执行的阶段包括 validateinitialize 等。这种依赖关系解释了为什么执行测试时会自动编译源代码。


    二、插件管理

    Maven 的灵活性在很大程度上得益于插件机制。插件通过特定的目标(goal)来实现构建任务的扩展。以下是插件管理的相关知识。

    2.1 插件目标(plugin goal)

    Maven 定义了抽象的生命周期,具体任务由插件完成。插件以独立的构件形式存在,Maven 会自动下载所需插件。每个插件通常可以完成多个任务,但为了复用代码,专门为每个任务编写插件似乎不太合理。例如,maven-dependency-plugin 提供了十多个目标,每个目标对应一个功能。

    2.2 插件绑定

    Maven 生命周期与插件相互绑定,通过绑定插件目标来完成具体的构建任务。例如,clean 阶段绑定了 maven-clean-plugin:clean 作为默认行为。

    2.3 内置绑定

    Maven 默认为生命周期的各阶段绑定了一些内置插件目标,方便用户调用。例如,process-resources 阶段默认绑定了 maven-resources-plugin:resources,用于处理资源文件。

    2.4 自定义绑定

    除了内置绑定,用户还可以自定义将插件目标绑定到生命周期的某个阶段。例如,可以在 POM 中配置:

    org.apache.maven.plugins
    maven-source-plugin
    2.1.1
    attach-sources
    verify
    jar-no-fork
    I'm jar-no-fork

    2.5 插件配置

    插件的执行可以通过命令行参数或 POM 配置来调节。例如:

    • 命令行配置:在命令行使用 -D 参数配置插件目标参数:

      mvn install -Dmaven.test.skip=true
    • POM 全局配置:在 POM 中的 <configuration> 节点下配置插件参数:

      org.apache.maven.plugins
      maven-compiler-plugin
      2.1
      1.6
      1.6
    • POM 任务配置:针对特定任务目标进行配置:

      org.apache.maven.plugins
      maven-source-plugin
      2.1.1
      attach-sources
      verify
      jar-no-fork
      I'm jar-no-fork

    通过以上内容,可以清晰地了解 Maven 的三套生命周期及其插件管理机制。理解这些概念是掌握 Maven 构建工具的关键。

    转载地址:http://uayfk.baihongyu.com/

    你可能感兴趣的文章
    NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表或全表增量同步_实现指定整库同步_或指定数据表同步配置_04---大数据之Nifi工作笔记0056
    查看>>
    NIFI1.23.2_最新版_性能优化通用_技巧积累_使用NIFI表达式过滤表_随时更新---大数据之Nifi工作笔记0063
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现数据实时delete同步_实际操作04---大数据之Nifi工作笔记0043
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
    查看>>
    NIFI从MySql中离线读取数据再导入到MySql中_03_来吧用NIFI实现_数据分页获取功能---大数据之Nifi工作笔记0038
    查看>>
    NIFI从MySql中离线读取数据再导入到MySql中_无分页功能_02_转换数据_分割数据_提取JSON数据_替换拼接SQL_添加分页---大数据之Nifi工作笔记0037
    查看>>
    NIFI从PostGresql中离线读取数据再导入到MySql中_带有数据分页获取功能_不带分页不能用_NIFI资料太少了---大数据之Nifi工作笔记0039
    查看>>
    nifi使用过程-常见问题-以及入门总结---大数据之Nifi工作笔记0012
    查看>>
    NIFI分页获取Mysql数据_导入到Hbase中_并可通过phoenix客户端查询_含金量很高的一篇_搞了好久_实际操作05---大数据之Nifi工作笔记0045
    查看>>
    NIFI同步MySql数据_到SqlServer_错误_驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server_Navicat连接SqlServer---大数据之Nifi工作笔记0047
    查看>>
    Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066
    查看>>
    NIFI大数据进阶_FlowFile拓扑_对FlowFile内容和属性的修改删除添加_介绍和描述_以及实际操作---大数据之Nifi工作笔记0023
    查看>>
    NIFI大数据进阶_Json内容转换为Hive支持的文本格式_操作方法说明_01_EvaluteJsonPath处理器---大数据之Nifi工作笔记0031
    查看>>
    NIFI大数据进阶_Kafka使用相关说明_实际操作Kafka生产者---大数据之Nifi工作笔记0036
    查看>>
    NIFI大数据进阶_NIFI的模板和组的使用-介绍和实际操作_创建组_嵌套组_模板创建下载_导入---大数据之Nifi工作笔记0022
    查看>>
    NIFI大数据进阶_NIFI监控的强大功能介绍_处理器面板_进程组面板_summary监控_data_provenance事件源---大数据之Nifi工作笔记0025
    查看>>
    NIFI大数据进阶_NIFI集群知识点_认识NIFI集群以及集群的组成部分---大数据之Nifi工作笔记0014
    查看>>