当我触发构建映像目标时,spring-boot-maven-plugin 再次重新运行完整构建周期的原因是什么?
What is the reason that the spring-boot-maven-plugin reruns a full build cycle again when I trigger the build-image goal?
我们注意到,当我们 运行 构建映像目标作为我们的 Maven 生命周期的一部分时,整个生命周期 运行s 两次(编译、测试编译、报告等) .对于大多数插件来说这不是问题,因为它们会检测到这种行为并且不会再次 运行。但是,我们有一些报告插件会由于这种行为而生成不正确的报告。
有没有办法禁用它?为什么会这样?
编辑:
https://github.com/Luckl/spring-boot-maven-test 举一个非常基本的例子。
大部分生命周期被 运行 两次的原因是因为 Spring Boot Maven 插件中的“build-image”目标需要 package phase to be run beforehand。
在日志中你可以看到 Maven 在 fork 中执行了这个阶段:
[INFO] >>> spring-boot-maven-plugin:2.3.0.RELEASE:build-image (default-cli) > package @ spring-boot-maven-test >>>
据我所知,当 Maven 在同一个构建中已经有 运行 时(当使用这个注解时),Maven 没有一个系统可以再次跳过 运行ning 那个阶段。
要避免这种情况,您可以做的是不在常规 Maven 生命周期中绑定 build-image 目标,而是直接调用它:mvn spring-boot:build-image
。
结果将是插件触发打包阶段,然后构建 docker 图像。
如果您需要将报告插件添加到您的构建中,您可以将其添加到包生命周期中(然后也将作为 build-image 的先决条件构建),或者您可以在之后调用单独的 mvn 命令(在那里你可以 skip/include 某些带有配置文件的插件。
更新:已提交 PR 以在 Maven 中修复此问题,从此处点击 GitHub 的链接:https://issues.apache.org/jira/browse/MNG-6566
我们注意到,当我们 运行 构建映像目标作为我们的 Maven 生命周期的一部分时,整个生命周期 运行s 两次(编译、测试编译、报告等) .对于大多数插件来说这不是问题,因为它们会检测到这种行为并且不会再次 运行。但是,我们有一些报告插件会由于这种行为而生成不正确的报告。
有没有办法禁用它?为什么会这样?
编辑: https://github.com/Luckl/spring-boot-maven-test 举一个非常基本的例子。
大部分生命周期被 运行 两次的原因是因为 Spring Boot Maven 插件中的“build-image”目标需要 package phase to be run beforehand。
在日志中你可以看到 Maven 在 fork 中执行了这个阶段:
[INFO] >>> spring-boot-maven-plugin:2.3.0.RELEASE:build-image (default-cli) > package @ spring-boot-maven-test >>>
据我所知,当 Maven 在同一个构建中已经有 运行 时(当使用这个注解时),Maven 没有一个系统可以再次跳过 运行ning 那个阶段。
要避免这种情况,您可以做的是不在常规 Maven 生命周期中绑定 build-image 目标,而是直接调用它:mvn spring-boot:build-image
。
结果将是插件触发打包阶段,然后构建 docker 图像。
如果您需要将报告插件添加到您的构建中,您可以将其添加到包生命周期中(然后也将作为 build-image 的先决条件构建),或者您可以在之后调用单独的 mvn 命令(在那里你可以 skip/include 某些带有配置文件的插件。
更新:已提交 PR 以在 Maven 中修复此问题,从此处点击 GitHub 的链接:https://issues.apache.org/jira/browse/MNG-6566