mvn install 和 mvn verify 之间的区别

Apache Maven是一个强大的构建管理工具,它提供了一种结构化的方法来管理项目的构建生命周期。Maven 构建由生命周期组成,它清楚地定义了项目的构建和分发方式。

在构建过程中发挥关键作用的两个非常有用的命令是mvn install和mvn verify。在本教程中,我们将比较和对比这两个命令,了解它们之间的差异。

Maven 生命周期
Maven 定义了三种标准生命周期——clean 、default和site——其中每个生命周期都有不同的目的:

  • clean生命周期负责清理项目。
  • 默认生命周期用于构建和部署。
  • 站点生命周期用于创建项目的站点文档。

每个生命周期由阶段组成,每个阶段代表生命周期中的一个阶段。

Maven的 默认生命周期
默认生命周期处理构建过程,从项目编译开始,到工件部署结束。它由六个阶段组成:

  1. validate:验证项目以确保所有必要的信息可用于构建。
  2. compile:将源代码编译为字节码。
  3. test:执行单元测试以确保代码的正确性。
  4. package:编译后的代码打包成 JAR 或 WAR 文件,具体取决于项目类型。
  5. verify:运行额外的验证检查,通常是集成测试或插件指定的测试。
  6. install:打包的工件安装到本地 Maven 存储库~/.m2/repository中,使其可用于同一计算机上的其他项目。

当运行命令时,我们只需要调用我们想要执行的最后一个构建阶段。例如,运行mvn test将按顺序执行validate、compile和test阶段。


mvn install和mvn verify区别
在Maven中,mvn install和mvn verify是两个不同的构建命令,它们之间有一些关键的区别

mvn install:

  • 该命令用于将项目构建的产物(通常是JAR文件或WAR文件)安装到本地Maven仓库中。这样,其他本地项目可以引用这个已经构建的项目,而不必每次都重新构建。
  • 该命令执行构建生命周期的install阶段,该阶段负责将项目构建产物安装到本地仓库。

mvn verify:

  • 该命令用于验证项目是否符合质量标准和各种规则。它通常在构建周期的较后阶段执行,通常在verify阶段执行。在这个阶段,插件可能会运行各种验证,例如执行集成测试、检查代码质量、运行静态分析等。
  • verify阶段通常是构建生命周期的最后一个阶段,它确保项目的构建产物不仅被成功构建和安装,而且通过了一系列质量和验证的步骤。

总结:
mvn install和mvn verify都有助于默认生命周期并共享公共阶段,但它们的用途略有不同:

  • mvn verify专注于执行简单单元测试之外的质量检查,例如集成测试和通过插件配置的自定义检查。当目标是确保项目满足特定的质量标准时建议这样做。
  • mvn install主要用于将项目的工件安装到本地存储库中。它经常在开发过程中用于在同一台机器上的项目之间共享工件。