Spring Boot Maven Plugin的repackage goal绑定生命周期及配置疑问
问题解答
- 首先明确:
repackagegoal 默认已经绑定到Maven生命周期的package阶段,这个是Spring Boot Maven插件本身预先定义好的,不需要额外指定绑定的phase。 - 你贴的第一份带
<executions>的配置作用是:让Maven在执行到package阶段时,自动触发repackagegoal运行。 - 两种配置的核心区别:
- 仅引入插件、不加
<executions>的配置:Maven不会在默认生命周期流程中自动执行repackage,你每次需要打可执行Spring Boot包时,都要在mvn package之后手动执行mvn spring-boot:repackage命令,才能把普通Jar包转为可执行的胖Jar。 - 加了
<executions>的配置:你只要执行mvn package命令,Maven完成原生打包逻辑后会自动调用repackage生成可执行包,不需要额外执行命令,在CI/CD流水线、日常本地打包场景下都更便捷。
- 仅引入插件、不加
- 补充说明:如果你项目的父POM继承了官方的
spring-boot-starter-parent,父POM已经默认配置好了repackage的自动执行规则,你哪怕只写插件坐标不加<executions>,也能实现mvn package自动打可执行包的效果,很多场景下两种写法表现一致就是这个原因。 - 手动执行
spring-boot:repackage的方式本身没有问题,如果你很少需要打可执行包,只是偶尔有需求,用这种方式完全可行,显式配置<executions>只是为了实现自动化执行,适配高频打包的场景。
内容的提问来源于stack exchange,提问作者AntonBoarf
相关产品推荐
相关产品推荐

