避免在GitLab CI中重复运行Maven阶段

时间:2019-07-05 08:13:39

标签: maven gitlab-ci

如果我们在.gitlab-ci.yml中定义了这样的阶段:

stages:
  - build
  - test
  - deploy
build:
  stage: build
  script: mvn -B compile

test:
  stage: test
  script: mvn -B test

deploy:
  stage: deploy
  script: mvn -B deploy

这很好,但是存在一个问题,即在我们每阶段进行的每个作业中,都将运行前面的pahse。在上面的示例中,测试阶段将同时在“测试”和“部署”阶段运行。我认为这是没有用的,并且会增加额外的管道运行时间。我知道我可以直接调用插件目标,但是很难维护pom。有什么好主意吗?

1 个答案:

答案 0 :(得分:0)

理论上,如果将maven项目拆分为多个执行不同功能的模块,则可以执行此操作。然后,您可以使用高级反应堆选项来恢复构建并使用以下命令处理下一个模块:

maven -rf <module name> <command>

请注意,我确实是从理论上说的。实际上,将构建和测试阶段分开是没有意义的,并且很难做到(除非测试阶段实际上是集成测试阶段)。付出很少的努力也是很大的努力。

有关高级反应堆选项的更多信息,请参见此处:

https://blog.sonatype.com/2009/10/maven-tips-and-tricks-advanced-reactor-options/