当使用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 阶段即可。