微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当我触发构建映像目标时,spring-boot-maven-plugin再次重新运行完整的构建周期是什么原因?

如何解决当我触发构建映像目标时,spring-boot-maven-plugin再次重新运行完整的构建周期是什么原因?

我们注意到,当我们将构建映像目标作为Maven生命周期的一部分运行时,整个生命周期将运行两次(编译,测试编译,报告等)。对于大多数插件而言,这不是问题,因为它们会检测到其行为,并且不会再次运行。但是,由于这种行为,我们有一些报告插件生成不正确的报告。

是否可以禁用它?为什么会发生?

编辑: https://github.com/Luckl/spring-boot-maven-test,其中有一个非常基本的示例。

解决方法

大多数生命周期都运行两次的原因是因为Spring Boot Maven插件中的“构建映像”目标需要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生命周期中不绑定构建映像目标,而是直接调用它:mvn spring-boot:build-image。 结果将是插件触发打包阶段,然后构建docker映像。

如果您需要将报告插件添加到构建中,则可以将其添加到软件包生命周期中(然后也将其构建为构建映像的先决条件),或者之后可以调用单独的mvn命令(可以跳过此处) /包括具有配置文件的某些插件)。


更新:已经提交了PR来修复Maven中的问题,请从此处访问指向GitHub的链接:https://issues.apache.org/jira/browse/MNG-6566

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。