七的博客

快速上手Maven(三)-构建生命周期

Maven

快速上手Maven(三)-构建生命周期

1. 构建生命周期是什么?

Maven 构建生命周期

Maven 的生命周期 ( build lifecycle )是一组定义好的阶段 ( phase ) 组成,这些阶段按照特定的顺序执行,每个阶段都是为了完成构建过程中的一个小任务,通过一个个小任务完成一个构建的流程。

我们可以换成一个我们生活中的例子,洗衣服的整个一个流程,可以分为:

  • 衣物分类

  • 放入洗衣机

  • 添加洗衣液

  • 选择一个合适的洗涤程序

  • 晾晒衣物

上面的一整套流程,其实这就是一个”生命周期“。 在这个 “洗衣服” 的生命周期中 , 每一步都是一个”阶段“。

你必须按照特定的顺序完成这些阶段,比如你不可能在在衣服洗完之前就开始晾晒,每个阶段都依赖于前一个阶段的完成。

2. 构建生命周期有哪些?

Maven 有三个内置的构建生命周期,分别是:

2.1 default

defult声明周期执行顺序

这个周期负责项目的构建和部署。定义了主要的构建任务,包括编译、测试、打包、安装、部署等等。

  • validate:用来检查项目是否有所有必要的信息和正确的配置。

  • compile:在这个阶段,Maven 会编译项目的源代码。将 .java 文件转换成 .class 文件。

  • test: 这个阶段,Maven 运行那些写好的测试用例(在项目中通常会是 JUnit 的测试用例),以检查代码是否按预期工作。

  • package: 将编译后的代码打包,比如 JAR 文件或者 WAR 文件,这些包可以直接部署到服务器上运行或者可以作为一个依赖包。

  • verify:在打包好之后,这个阶段验证打包出来的文件是否有效。

  • install: 将打包好的 JAR 包安装到本地仓库,这样就可以在你本机的其他项目中作为依赖项使用。

  • deploy:将最终的包部署到远程 Maven 仓库,如果其他同事或者项目需要使用这些包,他们可以从这个仓库中直接获取。

这些生命周期阶段是按顺序执行的。当调用一个阶段时,它之前的所有阶段都会被先执行。例如 , 当调用 package 阶段时 , Maven 会先执行 validate、compile、test 等阶段 , 最后再执行 package。

根据上面这个特点,你只需要调用最后一个你想执行的阶段即可。

2.2 clean

clean阶段执行顺序

这个周期 Maven 会删除之前构建生成的所有文件 , 为新的构建准备一个干净的环境,确保不会被旧的文件影响构建结果。主要包含以下几个阶段:

  • pre-clean:执行清理前需要完成的工作。
  • clean: 清理上一次构建生成的文件。
  • post-clean: 执行清理后需要完成的工作。

2.3 site

site 阶段执行顺序

这个生命周期主要是专门用于创建和管理项目文档的生命周期, 通过自动化方式生成项目的站点文档 ,这些文档通常包括项目报告、信息和发布说明等等一些。主要包含以下几个阶段:

  • pre-site:执行一些需要在生成站点文档之前完成的工作。
  • site: 生成项目的站点文档。
  • post-site: 执行一些需要在生成站点文档之后完成的工作。
  • site-deploy: 将生成的站点文档部署到特定的服务器上。

在实际项目场景中,常用来生成代码覆盖率报告、静态代码分析报告等,还有就是生成 API 文档等。

需要注意的是,带有连字符的阶段( pre-*post-*process-* )通常不会直接从命令行调用。通常这些阶段都是提供给插件使用的,类似于一个钩子函数,作为用户不会直接去调用这些阶段。

3. 常用的构建命令

有些命令其实在上面小节中已经介绍过作用了,只是没有给出具体的使用命令。

下面的命令背后都是一系列的插件,是 Maven 一些内置的插件。

3.1. mvn clean

清理项目,删除所有由先前构建生成的文件,通常是 target 目录中的文件。

3.2. mvn compile

编译项目的源代码。将 .java 文件转换成 .class 文件。

3.3. mvn test

运行应用程序的测试,不会重新编译代码,但会编译测试代码并运行。

3.4. mvn package

将编译的代码打包成可分发的格式,如 JAR 或 WAR 文件。

3.5. mvn install

将包安装到本地 Maven 仓库,供本机其他 Maven 项目使用。

3.6. mvn deploy

跟上面的 install 差异在于,这个是将最终构建的包部署到远程仓库中,供其他开发者和项目使用,不再局限于本机。

3.7. mvn site

生成项目的站点文档,如 Javadoc、覆盖率报告等。

3.8. mvn clean install

组合命令,首先清理项目,然后执行到 install 阶段的所有任务。在实际项目开发中,比较常用的一套组合命令。

3.9. mvn clean deploy

组合命令,首先清理项目,然后执行到 deploy 阶段的所有任务。

3.10. mvn clean package

组合命令,首先清理项目,然后执行到 package 阶段的所有任务。在本地打包或者在 Jenkins 打包时,常用这个命令。

4. 参考链接