spring-boot-maven-plugin插件打包成普通的jar包

当使用springboot的maven插件时(spring-boot-maven-plugin插件),默认是生成的可执行jar包,如果模块中有多个main方法,还需要我们指定具体的mainClass。如果我们想让其生成普通的jar包该怎么做呢?

做法

在命令行执行maven命里的时候加上-Dspring-boot.repackage.skip=true 参数即可,也就是:

1
mvn clean package -D spring-boot.repackage.skip=true

这样就只会生成一个普通的jar包。

原因分析

spring-boot-maven-plugin 插件共有5个Goals:

命令 说明
spring-boot:repackage 默认goal。在mvn package之后,再次打包可执行的jar/war,并将mvn package生成的软件包重命名为*.original
spring-boot:run 运行Spring Boot应用
spring-boot:start 在mvn integration-test阶段,进行Spring Boot应用生命周期的管理
spring-boot:stop 在mvn integration-test阶段,进行Spring Boot应用生命周期的管理
spring-boot:build-info 生成Actuator使用的构建信息文件build-info.properties

当时用 spring-boot-maven-plugin 插件时,下面的mvn命令会生成两个文件:

1
mvn package

执行后会看到生成的两个jar文件:

1
2
*.jar
*.jar.original

这是由于在执行上述命令的过程中,Maven首先在 package 阶段打包生成 .jar 文件;然后执行 spring-boot:repackage 重新打包,将之前的 .jar 包重命名为 .jar.original ,然后生成springboot的可执行jar包文件 .jar

所以,我们只需要跳过 spring-boot:repackage 阶段即可。

------ 本文完 ------