用于 maven 部署的 Gitlab CI/CD 的正确阶段是什么?

时间:2021-05-09 18:19:23

标签: maven gitlab-ci

我正在将 Gitlab CI/CD 用于 Java/Maven 项目,但对显示多个阶段的许多示例感到困惑,其中每个阶段都调用特定的 Maven 阶段(例如清理、编译、测试、安装)

Maven 文档非常清楚,每个阶段都隐式调用所有先前的阶段。所以我的问题是,为什么这些示例不只是调用阶段中列出的最后一个阶段?例如,如果 yml 中最后一个非手动调用的阶段执行“mvn install”,为什么不让它成为 yml 中的唯一阶段?这似乎只是浪费 CPU 和时间,因为安装还将调用“清理、编译、测试”,这些都已作为管道中前几个阶段的一部分被调用。

2 个答案:

答案 0 :(得分:1)

建议您先调用 mvn compile 然后调用 mvn test 等的“教程”尚未理解 Maven 生命周期。

只需调用一个命令,例如用于安装的 mvn installmvn deploy 如果您想在 Maven 的帮助下将其部署到某个 Maven 存储库。

答案 1 :(得分:0)

在不同阶段运行不同 Maven 目标的主要原因是清晰度。

如果测试失败并且管道有一个运行 mvn deploy 的作业,您需要查看管道失败原因的日志。 但是,如果在执行 mvn test 的地方存在单独的作业,您一眼就能看出管道因测试而失败。

在 gitlab 文档的示例中,他们使用缓存来缓存 mvn compile 的输出,因此后续步骤中的 Maven 目标不会从头开始编译,而是使用缓存。