Maven指令打包SpringBoot項(xiàng)目提示沒有主清單文件問題
Maven指令打包SpringBoot項(xiàng)目提示沒有主清單文件
項(xiàng)目打包為Jar后
通過java -jar xxxxx.jar運(yùn)行時(shí)提示xxxxx.jar中沒有主清單屬性,如下:

打開jar包
META-INF目錄下的MANIFEST.MF,內(nèi)容如下:
Manifest-Version: 1.0 Archiver-Version: Plexus Archiver Built-By: greedystar Created-By: Apache Maven 3.2.5 Build-Jdk: 1.8.0_181
我們發(fā)現(xiàn)這里沒有主類等信息,是什么原因?qū)е碌哪兀?/p>
網(wǎng)上大多數(shù)資料指出需要在pom.xml中配置maven插件,如下:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>這種解決方案通??梢越鉀Q大部分問題,但這種方案只在使用 spring-boot-starter-parent 為 <parent/> 標(biāo)簽內(nèi)容時(shí)才有效,當(dāng)我們使用自定義的<parent/>節(jié)點(diǎn)時(shí)按如上所述的方式配置maven插件則是無效的,這是為什么呢?讓我們一起看一看 spring-boot-starter-parent 中的配置。
spring-boot-starter-parent 中maven插件的配置如下:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>${start-class}</mainClass>
</configuration>
</plugin>我們可以看到這里配置了主類信息以及一個(gè)重要的標(biāo)簽<goal>,對(duì)repackage的描述如下:
Repackages existing JAR and WAR archives so that they can be executed from the command line using java -jar.
看到這里我們就清楚了,當(dāng)使用自定義的 parent 時(shí),我們需要自行配置maven插件的<goal>屬性,如下:
<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>指定mvn clean package指令打包jar包后看一下清單文件
內(nèi)容如下:
Manifest-Version: 1.0 Archiver-Version: Plexus Archiver Built-By: greedystar Start-Class: cn.bimart.scf.bc.tx.server.TxServerApplication Spring-Boot-Classes: BOOT-INF/classes/ Spring-Boot-Lib: BOOT-INF/lib/ Spring-Boot-Version: 2.1.1.RELEASE Created-By: Apache Maven 3.2.5 Build-Jdk: 1.8.0_181 Main-Class: org.springframework.boot.loader.JarLauncher
這樣項(xiàng)目就打包成功了,通過java -jar也可以正確運(yùn)行了。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
常用json與javabean互轉(zhuǎn)的方法實(shí)現(xiàn)
這篇文章主要介紹了常用json與javabean互轉(zhuǎn)的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
解決IDEA和CMD中java命令提示錯(cuò)誤: 找不到或無法加載主類的問題
這篇文章主要介紹了解決IDEA和CMD中java命令提示錯(cuò)誤: 找不到或無法加載主類的問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09
SpringBoot+本地消息表實(shí)現(xiàn)分布式最終一致性
本文主要介紹了SpringBoot+本地消息表實(shí)現(xiàn)分布式最終一致性,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2026-02-02
java實(shí)現(xiàn)interceptor攔截登錄權(quán)限
Java里的攔截器是動(dòng)態(tài)攔截action調(diào)用的對(duì)象,本文主要介紹了java實(shí)現(xiàn)interceptor攔截登錄權(quán)限,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09
說說@ModelAttribute在父類和子類中的執(zhí)行順序
這篇文章主要介紹了@ModelAttribute在父類和子類中的執(zhí)行順序,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06
Java入門指南之IDEA高效調(diào)試與數(shù)組
調(diào)試是指在程序運(yùn)行過程中,通過各種手段觀察程序的執(zhí)行狀態(tài)、變量值的變化等,以找出程序中存在的錯(cuò)誤或異常的過程,這篇文章主要介紹了Java入門指南之IDEA高效調(diào)試與數(shù)組的相關(guān)資料,需要的朋友可以參考下2026-05-05

