1.問題背景
在使用SpringBoot架構搭建父子工程時,使用IDEA可以正常啟動,但打成jar包后使用jar方式啟動時,會報錯xx.jar中沒有主清單屬性。
2.原因分析
原因主要是在使用jar方式啟動時,沒有指定Main-Class,導致啟動時找不到主方法,使得SpringBoot項目無法啟動。
嘗試解壓jar包,進入META-INF目錄,查看MANIFEST.MF文件,里面確實沒有指定Start-Class和Main-Class
3.解決方案
指定Main-Class即可。
在子工程的pom.xml文件中添加配置
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
主要是使用goal來指定需要重新打包。作用是在原始Maven打包形成的jar包基礎上,進行重新打包,新形成的jar包不但包含應用類文件和配置文件,而且還會包含應用所依賴的jar包以及Springboot啟動相關類,以此來滿足Springboot獨立應用的特性。