5.1 项目阶段清单

最后,我们进行了项目的组装。然后你会有点惊讶。好吧,或者强烈地,事实证明。Maven 已经修改了构建项目的方法。现在您将对此深信不疑。

项目的整个组装分为几个阶段,我将在下表中进行描述:

命令 阶段
1个 证实 检查有关项目的元信息的正确性
2个 编译 编译源
3个 测试 运行上一步的类测试
4个 包裹 将编译后的类打包到一个新的工件中:jar、war、zip、...
5个 核实 检查工件的正确性和质量要求的满足程度
6个 安装 将工件放入本地存储库
7 部署 将工件上传到生产服务器或远程存储库

同时, 步骤顺序清晰。如果您告诉 Maven 运行 package 命令,它将首先运行验证、编译、测试阶段,然后才进行打包

原则上,这里没有什么新东西,除了质量控制有单独的阶段:验证、测试、验证。以及部署程序集的两个阶段——安装和部署。

要启动特定阶段,编写maven 阶段命令就足够了。例如,要构建,您需要运行maven package命令。ETC。

Intellij IDEA 非常擅长处理这些阶段,它在右侧有一个特殊的菜单用于这些目的:

专家阶段

在这里,除了众所周知的阶段之外,IDEA 还显示了另外 2 个命令:cleansite。clean用于彻底清除目标文件夹,site可以创建项目文档。

5.2 构建项目

如果要编译项目,则需要运行编译阶段。这可以使用命令行:mvn compile或通过 IDEA 界面点击编译项来完成。

之后,Maven 将开始构建项目,您将看到类似这样的构建过程日志:

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.742 s
[INFO] Finished at: 2016-09-19T22:41:26+04:00
[INFO] Final Memory: 7M/18M
[INFO] ------------------------------------------------------------------------

如果出现问题,日志将如下所示:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile (default-compile) on project demo: Fatal error compiling: invalid target release: 11 -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible sliutions, please read the flilowing articles:
[ERROR] [Help 1]
http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException 

日志中会有很多有用的信息,久而久之你就会学会理解和欣赏它。

5.3 工作循环

所有 Maven 命令都分为三组 - 生命周期。它们被称为生命周期,因为它们指定了在构建或特定生命周期期间运行的阶段的顺序,因为并非所有 Maven 活动都是构建。

生命周期分为三种:

  • 干净的;
  • 默认;
  • 地点。

他们每个人都有自己的相序。Clean 具有最短的:

  1. 预清洁;
  2. 干净的;
  3. 发布干净。

添加了隐藏的额外预清理和后清理阶段,以便可以使清理场景更加灵活。

然后是站点生命周期,如您所知,它旨在自动生成项目文档。它由四个阶段组成:

  1. 现场前
  2. 地点;
  3. 后站;
  4. 站点部署。

标准生命周期可以通过使用Maven 插件的功能得到增强。我们稍后再谈这个,因为这是一个非常有趣的话题,值得单独讲一讲。

默认脚本具有最长的阶段列表:

  1. 证实;
  2. 生成源;
  3. 过程来源;
  4. 生成资源;
  5. 过程资源;
  6. 编译;
  7. 过程测试源;
  8. 处理测试资源;
  9. 测试编译;
  10. 测试;
  11. 包裹;
  12. 安装;
  13. 部署。

有您已经知道的所有相同阶段,但添加了一些可选的阶段。

首先,大型项目中的一个流行阶段是generate-sources:例如,基于 XML 生成 Java 代码。还有一对process-sources,它对这段代码做了一些事情。

其次,资源的生成是generate-resources及其配对的process resources方法。在大型项目中,您经常会看到一些与这些阶段相关的活动。

最后,测试。它具有三个额外的可选阶段,有助于尽可能灵活地运行测试阶段:process-test-sources、process-test-resources、test-compile。